我在使用新的C++ unordered_map时遇到了问题:我想要使用operator[]
来访问一个const
键,但是被拒绝了。
我不能提供整个代码,但我可以简化我的问题如下:
#include <unordered_map>
class A {
public:
A();
};
class B {
public:
B();
};
int main(int argc, char **argv) {
std::unordered_map<A &, B> myMap;
A a;
const A &ar = a;
B b;
myMap[ar] = b;
}
编译器的输出有点长,但最后一行是这样的:
/usr/include/c++/4.6/bits/hashtable_policy.h:537:5: note: no known conversion for argument 1 from ‘const A’ to ‘A&’
我使用
const A &
,因为在我的代码中,一些方法将它原样给予我。而且,顺便说一下,关键字应该是const。我尝试了std::unordered_map<const A &, B> myMap;
,但也不起作用。我使用的是gcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5),并带有
-std=c++0x
标志。请问为什么这是被禁止的?我必须说我不理解原因。
非常感谢(如果问题很蠢,请原谅...)。