我不确定我是否完全理解哈希表/无序映射。当我执行以下操作时,代码会编译并正常工作:
#include <tr1/unordered_map>
int main() {
tr1::unordered_map<string, int> base;
string string1;
int integer1;
base["A"] = 0;
string1 = "A";
integer1 = base[string1];
cout << integer1 << endl;
return 0;
}
但这不会编译:
#include <tr1/unordered_map>
int main() {
tr1::unordered_map<int, char> base;
char char1;
int integer1;
base[1] = 'A';
integer1 = 1;
char1 = base[integer1];
cout << char1 << endl;
return 0;
}
这会产生此错误:
错误:调用不匹配
'(std::tr1::unordered_map<int, char, std::tr1::hash<int>, s std::equal_to<int>, std::allocator<std::pair<const int, char> >, false>) (int*)'
有人可以向我解释这个问题吗?我想我不明白 unordered_map 是如何工作的。我在 Apple 上使用 gcc 4.2.1 进行编译。