そして、イテレータを使用しての問題

イテレータ関数ポインタではなく、そこにあるが、ポインタ!最も重要なのは、コンテンツの概要とメンバーへのアクセスです。

反復子は、オペレータ等が挙げられ、その本質は、容器への統一されたインタフェースを提供するために、ネイティブポインタをカプセル化される- > * ++ -ポインタをオーバーロードポインタのようなオブジェクトであります

声明

コンテナタイプ<typpe、。> ::イテレータイテレータの名前

例如:ベクトル<整数> ::イテレータITER。

第二に、イテレータは失敗します

容器やデータの削除に追加すると、イテレータの故障につながる可能性

(1)シーケンシャルコンテナ(ベクター、両端キュー)

存在を指し示す容器にデータを追加または削除する場合、電流が挿入後ろ要素を作る又は前後位置を削除します使用、すなわちシーケンシャルコンテナ連続的に割り当てられたメモリ、動きが発生したデータ・イテレータを意志障害、およびイテレータの使用に失敗インクリメントまたは操作を直接プログラムをクラッシュ!役に立たない役に立たないああ!

)ベクトルと両端キューを(消去使用する場合、現在の削除されたノードの次の反復は、それがループのために使用して削除されて戻り、イテレータ下ITEイテレータを受信することが明らかにされるべきです。

 

 

 

 

 (2)コンテナに関連付けられました

 削除または要素を追加するときに関連付けられたコンテナ、イテレータは、現在の要素の障害を指します。イテレータ要素を削除した後返すマップ消去()関数、およびそれ以降の反復を除去すべき要素について依然として有効です。

 

 

注意:エンド()ファンクションポイントをコンテナに位置内の最後の要素の後に、値がエラーを指示する場合、プログラムがクラッシュ!

解決法:あなたは、次のループ反復法、消去するために渡されたITE最初のパラメータ、インクリメント(ITE ++)を削除するために時間を使い、最後に消去()関数を実行することができます。

 

 

 

(3)型容器一覧(リスト)

このような容器は、イテレータに加えて、有効なまま、削除位置イテレータの失敗を削除するために指しています。ソリューションの消去(*それは)次の有効なイテレータに値を返す、または(それ++)を消去します

 

参考ます。https://blog.csdn.net/lujiandong1/article/details/49872763

おすすめ

転載: www.cnblogs.com/socks/p/11464921.html