Какова стандартная практика создания карты и возврата ее в функцию в качестве ссылки?
Не существует "стандартной практики" того, что вы хотите сделать, потому что, честно говоря, это необычно.
Если вы хотите, чтобы функция вернула карту, то заставьте ее вернуться карта:
std::map<char, int> createMap(std::string& myString){
std::map<char, int> myMap;
// ...
return myMap;
}
Возврат ссылки на локальную переменную обычно является проблемой:
int& foo() { int x; return x; }
, поскольку возвращаемая ссылка свисает (x
давно исчезает, когда вызывающая сторона получает ссылку). Подробнее об этом читайте здесь .
Кажется, вы пытались обойти эту проблему, используя динамическое выделение памяти c. Однако в этом нет необходимости. Скорее этого следует избегать! Стандартные контейнеры уже управляют своей памятью, и в большинстве случаев выделение контейнера в куче является запахом кода.