对unordered_map使用const键

Bla*_*jac 21 c++ stl

在适当的时候,我一直在将我的代码从std :: map切换到std :: unordered_map.使用std :: map,我通常会编写以下代码以确保无法修改密钥:

std::map<const std::string, int>
Run Code Online (Sandbox Code Playgroud)

坦率地说,我从未检查过这个const是否具有任何价值.这总是编译和使用g ++.

现在,使用std :: unordered_map,以下内容无法与g ++ 4.5.1链接.

std::unordered_map<const std::string, std::string> m;
m["foo"] = "bar";
Run Code Online (Sandbox Code Playgroud)

有这个链接错误:

未定义的符号: std::map,引自:

修复很简单,删除const,但除此之外,在STL中是否还有一个点使用任何关联容器类来使用const键类型?是否没有方法可以让您获得任何关联类型的键的引用?

MSN*_*MSN 22

关联容器只显示(键,值)对std::pair<const key_type, mapped_type>,因此键类型上的附加const是多余的.

  • 换句话说:`std :: unordered_map <std :: string,std :: string>`会做他想做的事.(乔纳森说,重申最明显的.) (6认同)
  • 这个答案告诉提问者,他不需要做他正在做的事情。问题是,为什么他_不能_做到这一点,仍然是...... (2认同)