在C++的地图中插入

Insertion in maps in C++

本文关键字:插入 地图 C++      更新时间:2023-10-16
map<string ,vector<string> > hashes;
hashes.insert(pair<string,vector<string> > (a,b ));  //error coming

当我在C++中使用上述语句时,会出现什么问题,其中 a 和 b 是字符串?在这种类型(即一个容器包含多个容器)的关联容器中如何进行插入?

提前感谢很多

你可能想要

hashes[a].push_back(b)

也就是说,如果您希望将 b 附加到当前向量。 如果您希望它替换它,请使用

hashes[a].assign(1, b)

您正在尝试使用需要字符串向量的字符串。您需要将b插入到矢量中,然后将 (a, your_vector) 插入到地图中。

或者,使用multimap<string, string>以您可能认为更易于使用的方式获得相同的基本效果。这将允许您insert(pair<...>(a, b)).

还可以考虑使用 std::make_pair,而不是直接实例化std::pair。它将推断参数的类型,因此您无需明确填写它们。

只需遵循以下定义:

vector<string> v;
v.push_back("mystring");
hashes.insert(std::make_pair("key", v));

请注意,要make_pair的第二个参数是vector<string>。到时候这永远不会失败。如果第二个参数是字符串,它将失败。