エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
【C++】後置形式でIteratorの無効化を防ぐ : あんちょこ
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
【C++】後置形式でIteratorの無効化を防ぐ : あんちょこ
前回の記事でiteratorを操作するときは前置形式の方がわずかにパフォーマンスが良いと述べた。しかし、... 前回の記事でiteratorを操作するときは前置形式の方がわずかにパフォーマンスが良いと述べた。しかし、後置形式を使わないといけない場合もある。それが今回のタイトルにある「イテレーターの無効化を防ぐ」ということである。 std::listに対してiteratorを使って先頭から順番にアクセスし、特定の要素だけを削除することを考えてみよう。条件に合うものが来たらeraseするだけだが、iteratorを使ってeraseすると削除と同時にiteratorも無効になってしまい、以降の内容にアクセスができなくなる。なぜなら、双方向リストの場合だと、各要素は「次の要素」と「前の要素」へのポインタで連結されており、iteratorが指している要素を削除してしまうと、次の要素の居場所も分からなくなるからだ。こういうときは削除と同時にiteratorを進めなければならない。まぁあまり難しく考えずに次のサン