我有这段代码:
map< int , vector< int>> testmap;
vector<int> testvector;
testvector.push_back(10);
testmap.insert(1, testvector);
这段代码给我一个错误,告诉我没有重载函数来匹配参数列表。
谁能告诉我为什么会这样?我正在尝试将矢量插入到地图中,但此方法似乎不起作用。
答案 0 :(得分:5)
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
的元素,则会成功。
答案 1 :(得分:3)
testmap.insert(1, testvector);
你可能打算做
testmap[1] = testvector;
代替。
答案 2 :(得分:2)
由于您使用的是C ++ 11(使用>>
:)证明了这一点,因此您也可以使用emplace
。
testmap.emplace(1, testvector);
答案 3 :(得分:0)
尝试
testmap.insert({1, testvector});