【发布时间】:2016-02-16 18:05:44
【问题描述】:
我正在将记录插入到无序的地图中,这会导致错误,下面是程序:
#include<tr1/unordered_map>
using namespace std;
int main(int argc, char *argv[])
{
std::tr1::unordered_map<int, int> u1;
int n;
cout << "Enter the no. of times" << endl;
cin >> n;
for (int i = 0; i<n; i++)
{
int no_items;
cout << "Enter no of items" << endl;
cin >> no_items;
for (int j = 0; j<no_items; j++)
{
int key, val;
cout << "key=";
cin >> key;
cout << endl << "val=";
cin >> val;
u1.insert(std::make_pair<int, int>(key, val)); //Compiler error
//u1[key]=val; //This line is working instead of insert.
}
}
return 0;
}
u1.insert(std::make_pair<int,int>(key,val)); 报错
- 无法将“key”(类型“int”)转换为类型“int&&”
- 没有匹配的函数调用'make_pair(int&, int&)'
想知道operator [] 用于将记录插入unordered_map 是如何工作的,而insert() 是如何工作的。
【问题讨论】:
-
你试过写
u1.insert(std::pair<int,int>(key,val));吗? -
得到了答案,刚接触编程,所以没有正确理解。
标签: c++ unordered-map