所以我创造了
map<string, vector<int>> mylist;
但我在添加项目时遇到问题。我尝试创建一个向量,然后在地图中插入一个字符串和向量,但是visual studio在插入函数的行上给了我一个错误 (它表示没有重载函数的实例与参数列表匹配)。这就是我正在做的事情:
vector<int> variable_list(some_integer);
mylist.insert(string_variable, variable_list);
我应该如何将矢量添加到地图中?我可以以某种方式在插入函数中创建向量吗?
另外,我将使用一个int初始化向量,但后来我想回去再添加更多。如何在地图中访问矢量?
感谢您的帮助。
答案 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;