错误位:“错误 1 error C2664: 'std::map<_Kty,_Ty>::map(const std::less<_Ty> &)' : cannot convert parameter 1 from 'const std::pair<_Ty1,_Ty2>' to 'const std::less<_Ty> &' ”;
错误代码:
map<int,map<int,int>> coll;
coll.insert(make_pair(7,make_pair(1,1)));
错误原因:
make_pair()函数的返回值的类型为pair<int,int>。因此,make_pair(7,make_pair(1,1))的返回值的结果为pair<int ,pair<int ,int>>;
但是我们先前定义的map内的类型为<int ,map<int,int>>,因此<int ,pair<int ,int>不符合定义,不能进行操作!而且在pair和map之间没有类型转化,因此也不能强制类型转化。
修改措施:
方法一:
map<int,map<int,int>> coll;
map<int,int> temp;
temp.insert(make_pair(1,1));
coll.insert(make_pair(7,temp));
方法二:
map<int,pair<int,int>> coll;
coll.insert(make_pair(7,make_pair(1,1)));
方法三:
map<int,map<int,int>> coll;
coll.insert(make_pair(7,map<int,int>().insert(1,1)));