掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
STDのイテレータを回している時にやってはいけないこと? (ID:72699)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
c++のstdは便利な機能ですが、最近色々疑問がわいてきました。 例えばvectorのiteratorを回している時に要素を追加してはいけない。 とかあるようですが、他に注意する点はあるでしょうか。 回している時に要素をvectorに追加するとvectorの要素が壊れることがあるそうですがなぜ起こるのでしょうか? 質問1 setやmapのiteratorを回している時にしてはいけない事や注意点などあるのでしょうか? 質問2 queueやstackなどでも注意点はあるのでしょうか? 例えば、queueやstackにiteratorはあるのかとか、queueやstackの要素にポインタを行ったり参照したりしている時に、何かおかしなことが起きたりしますか? mapやsetなどではどうなるのでしょうか? 質問3 set<set<int>>のような構造に対し,set<set<int>>::iterator it1,set<int> ite2 でit1のイテレータを回している時,set<set<int>>やset<int>の要素を追加したり削除したり、it2を回している時にset<set<int>>やset<int>要素を追加したりはできるのでしょうか? なにか落とし穴があったりしますか? set<set<int>> aのようなデータをメモリから解放する時はa.clear()でいいのでしょうか? set<map<int,int>>やset<queue<int>>やvector<set<int>>など色々な組み合わせが考えられますが、この時の注意点や基本的な取り扱い方などあるでしょうか? iteratorを回してない時の追加や削除は基本的に安全に行えるのでしょうか? 質問4 そもそもiteratorとはなんなのでしょうか? 構造化されたポインタ、それと参照なのでしょうか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.