map<string ,vector<string> > hashes;
hashes.insert(pair<string,vector<string> > (a,b )); //error coming
a と b が文字列である C++ で上記のステートメントを使用しているときに発生する問題は何ですか? このタイプの連想コンテナ (つまり、複数のコンテナを含む 1 つのコンテナ) では、挿入はどのように行われるのでしょうか?
多くの多くの前もって感謝します
あなたはおそらくしたい
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));
の2番目のパラメータmake_pair
が。であることに注意してくださいvector<string>
。その場合、これは決して失敗しません。2番目のパラメータが文字列の場合は失敗します。