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

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

a と b が文字列である C++ で上記のステートメントを使用しているときに発生する問題は何ですか? このタイプの連想コンテナ (つまり、複数のコンテナを含む 1 つのコンテナ) では、挿入はどのように行われるのでしょうか?

多くの多くの前もって感謝します

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)をマップに挿入する必要があります。

または、を使用して、使いmultimap<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));

の2番目のパラメータmake_pairが。であることに注意してくださいvector<string>。その場合、これは決して失敗しません。2番目のパラメータが文字列の場合は失敗します。

于 2012-06-08T22:03:14.890 に答える