我有这样的代码:插入到地图类型<INT,矢量<int>>
map< int , vector< int>> testmap;
vector<int> testvector;
testvector.push_back(10);
testmap.insert(1, testvector);
此代码是给我一个错误,告诉我,没有重载函数相匹配的参数列表。
有谁能告诉我为什么会发生这种情况?我试图插入一个矢量到地图中,但这种方法似乎不起作用。
我有这样的代码:插入到地图类型<INT,矢量<int>>
map< int , vector< int>> testmap;
vector<int> testvector;
testvector.push_back(10);
testmap.insert(1, testvector);
此代码是给我一个错误,告诉我,没有重载函数相匹配的参数列表。
有谁能告诉我为什么会发生这种情况?我试图插入一个矢量到地图中,但这种方法似乎不起作用。
std::map::insert
没有与您传递的参数匹配的过载。这会工作:
auto p = testmap.insert(std::make_pair(1, testvector));
std::cout << std::boolalpha;
std::cout << "Did insert succeed? " << p.second << std::endl;
如果在与主要1
地图没有元素这会成功。
testmap.insert(1, testvector);
你大概的意思做
testmap[1] = testvector;
代替。
由于您使用的是C++ 11(如您使用>>
:)所示),因此您也可以使用emplace
。
testmap.emplace(1, testvector);
_'通过使用'>>'...'_就可以证明这可以被模糊地读出来...... –
查看[本文档](http://en.cppreference.com/w/cpp/container/map/insert)。 – juanchopanza