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) 插入地图。
或者,使用 amultimap<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));
请注意 to 的第二个参数如何make_pair
是 a vector<string>
。这将永远不会失败。如果第二个参数是字符串,它将失败。