我不确定我是否完全理解哈希表/无序地图。当我执行以下操作时,代码将编译并正常工作:
#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。
答案 0 :(得分:0)
以下编译并适用于Visual C ++ 10.0和MinGW g ++ 4.6.1:
#include <iostream>
#include <unordered_map>
int main()
{
using std::unordered_map;
using std::cout; using std::endl;
unordered_map<int, char> base;
char char1;
int integer1;
base[1] = 'A';
integer1 = 1;
char1 = base[integer1];
cout << char1 << endl;
return 0;
}
TR 是“技术报告”的缩写。 TR1是第一份技术报告,包含标准库的扩展。这些扩展已经在C ++ 11标准中采用,并且大多数已经在例如C ++ 11标准中实现。 Visual C ++和g ++。
因此,只需直接使用标准库。