Используя константный ключ для unordered_map

Я переключил свой код с std :: map в std :: unordered_map , где это необходимо. С std :: map я обычно пишу следующее, чтобы убедиться, что ключ не может быть изменен:

std::map<const std::string, int>

Честно говоря, я никогда не проверял, имеет ли эта const какое-либо значение. Он всегда компилировался и работал с g ++.

Теперь, с std :: unordered_map , следующее не удается связать с g ++ 4.5.1.

std::unordered_map<const std::string, std::string> m;
m["foo"] = "bar";

с этой ошибкой ссылки:

Неопределенные символы : "std :: hash , std :: allocator > const> :: operator () (std :: basic_string , std :: allocator >) const ", ссылка на него:

Исправление простое: удалить const , но, кроме того, есть ли вообще точка в STL с любым из ассоциативных контейнерных классов использовать тип ключа const ? Нет ли методов, позволяющих получить ссылку на ключ для любого ассоциативного контейнера?

21
задан 眠りネロク 11 March 2019 в 07:17
поделиться