2014-02-24 38 views
2

我有这样的代码:插入到地图类型<INT,矢量<int>>

map< int , vector< int>> testmap; 
vector<int> testvector; 
testvector.push_back(10); 
testmap.insert(1, testvector); 

此代码是给我一个错误,告诉我,没有重载函数相匹配的参数列表。

有谁能告诉我为什么会发生这种情况?我试图插入一个矢量到地图中,但这种方法似乎不起作用。

+0

查看[本文档](http://en.cppreference.com/w/cpp/container/map/insert)。 – juanchopanza

回答

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地图没有元素这会成功。

3
testmap.insert(1, testvector); 

你大概的意思做

testmap[1] = testvector; 

代替。

2

由于您使用的是C++ 11(如您使用>> :)所示),因此您也可以使用emplace

testmap.emplace(1, testvector); 
+0

_'通过使用'>>'...'_就可以证明这可以被模糊地读出来...... –

相关问题