0
map<string ,vector<string> > hashes;

hashes.insert(pair<string,vector<string> > (a,b ));  //error coming

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

很多很多提前谢谢

4

3 回答 3

3

你可能想要

hashes[a].push_back(b)

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

hashes[a].assign(1, b)
于 2012-06-08T22:03:42.010 回答
2

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

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

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

于 2012-06-08T22:03:14.260 回答
2

只需遵循定义:

vector<string> v;
v.push_back("mystring");

hashes.insert(std::make_pair("key", v));

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

于 2012-06-08T22:03:14.890 回答