に変換する方法c++std::リストの要素をmultimap反復子
質問
していま
std::list<multimap<std::string,std::string>::iterator> >
今は新しい要素:
multimap<std::string,std::string>::value_type aNewMmapValue("foo1","test")
避けたいの設定温度multimap、差し込んでくださの新しい要素だけに、その反復子戻る る事ができて本当に良かったのに最後までしっかりと押し込みまに:
std::list<multimap<std::string,std::string>::iterator> >
したいので何とか避けること創造の温度multimap.感謝
解決
必要なものを挿入するキー-値ペアにmultimapを取得する前に、反復子です。
反復子が働かない。の場合は保管反復子から複数の異なるmultimapsだく必要がある以上のもので反復子のリスト。
でしょうし
a
pair<multimap<std::string,std::string>::iterator, multimap<std::string,std::string>::iterator>
が、反復子および第二は、iterator.a
pair<multimap<std::string,std::string>::iterator, multimap<std::string,std::string>*>
が最初の反復子があるものを指すポインタのmultimapの反復子に属します。その他の種類の溶液とする。
編集:私も彼の意見に賛成とMykola Golubyev:できるのは悪いことを保管反復子のための長期化と新しいパスワードを入力しての反復子が無効になるかもしれないという
他のヒント
あなたは、あなたのlist
に格納するデータ・タイプを指定していません。とにかく、あなたは(s)は、特定のキーによって指された値を追加したいと仮定して、あなたはlist.insert(*mapIter)
を呼び出すことができます。
multimap<std::string,std::string>::value_type aNewMmapValue("foo1","test")
あなたはmap.insert
経由でマルチマップにこれを追加する必要があります。この関数は、イテレータを返します。その後、安全にあなたのリストに、このイテレータを追加することができます。
std::list<multimap<std::string,std::string>::iterator> yourlist;
// ....
multimap<std::string,std::string>::iterator itr =
yourmultimap.insert(aNewMmapValue);
yourlist.insert(itr);
型std::multimap<std::string,std::string>::iterator
はのSTDに格納されているstd::pair<const std::string, std::string>
にイテレータ::マルチマップするです。要素がマルチマップ内に格納されていない場合、それはmulitmapイテレータを介して参照することができない。
あなたが代わりにstd::list<std::pair<std::string,std::string> >
を使用し保存することがあります。
イテレータを保管しないでください。 constのイテレータまたはより良い方法のいずれかを使用してマップ内の要素へのポインタを格納しています。