Вы можете использовать std::string_view
:
std::map<std::string_view, int> Map;
Map["abc"] = 1; // no allocation necessary to store "abc"
Это в основном оболочка для строковых объектов.И это представление, которое означает, что оно не владеет строкой и, следовательно, не копирует и не выделяет память для хранения строки.
Обратите внимание, что для небольших строк (а также литералов) std::string
нене выделяется слишком из-за SSO , поэтому накладные расходы минимальныВсегда измеряйте перед оптимизацией.