C ++:在Map中插入Vector

时间:2014-02-05 17:41:50

标签: c++ c++11

所以我创造了

 map<string, vector<int>> mylist;

但我在添加项目时遇到问题。我尝试创建一个向量,然后在地图中插入一个字符串和向量,但是visual studio在插入函数的行上给了我一个错误 (它表示没有重载函数的实例与参数列表匹配)。这就是我正在做的事情:

vector<int> variable_list(some_integer);
mylist.insert(string_variable, variable_list);

我应该如何将矢量添加到地图中?我可以以某种方式在插入函数中创建向量吗?

另外,我将使用一个int初始化向量,但后来我想回去再添加更多。如何在地图中访问矢量?

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

对于这类问题,我建议您查找一个好的参考资料,例如cppreference.com

如果您去那里查找std::map::insert,您会看到此签名的重载:std::pair<iterator,bool> insert( const value_type& value );,它告诉我们它需要一个名为value_type的内容。如果您查看std::map,则会看到value_type的{​​{1}}是typedef。

现在,您可以使用std::pair<const Key, T>创建正确的类型,如下所示:std::make_pair


作为旁注,我不得不强烈建议找一本介绍性书籍,因为你的问题的其余部分表明你不仅仅是插入地图而感到困惑。
对于初学者,mylist.insert(std::make_pair<const string, vector<int>)不会在其中构建包含vector<int> variable_list(number)的向量,但会构造number个零的向量。

答案 1 :(得分:2)

您需要致电mylist.insert(std::make_pair(string_variable, variable_list));。您正在寻找以{value}作为参数的std::map::insert版本,在您的情况下,它是std::pair<std::string, std::vector<int>>

答案 2 :(得分:2)

map::insert需要std::pair。您可以使用make_pair或撰写mylist[string_variable] = variable_list;