我对新的 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&’
我使用 a 是const A &
因为在我的代码中,某些方法按原样将其提供给我。而且,顺便说一句,键应该是 const。我已经尝试过std::unordered_map<const A &, B> myMap;
,但它也不起作用。
-std=c++0x
我使用带有标志的 gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 。
你能告诉我为什么这是被禁止的吗?我必须说我不明白原因。
非常感谢(如果问题很愚蠢,请原谅......)。