std::vectorから要素を削除する方法

ベクトルを反復処理して要素を削除するには、C++ ではイテレータを使用できます。手順は次のとおりです。

  1. イテレータを作成し、ベクトルの最初を指すように設定する
  2. イテレータを使ってベクトル全体をループで走査する。
  3. 繰り返しの中で、現在のイテレーターが指す要素が削除に必要とされる条件を満たすかを判定する。
  4. 現在の要素を消去する条件であれば、イテレータのerase()関数を使用してその要素を消去し、イテレータを次の要素に移動させます。
  5. 削除条件を満たさなければ、イテレータは次の要素へ進む
  6. ループを完了すると、削除条件を満たすすべての要素が削除されます。

以下にサンプルコードを示します。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    
    for (auto it = vec.begin(); it != vec.end();) {
        if (*it % 2 == 0) {
            it = vec.erase(it);
        } else {
            ++it;
        }
    }
    
    for (int num : vec) {
        std::cout << num << " ";
    }
    
    return 0;
}

結果は1 3 5です。

上記の例では、vector はイテレータを用いて走査され、erase() 関数で偶数という条件を満たす要素が削除されます。削除後、イテレータは自動で次の要素を指し示すようになるため、ループ内でイテレータを明示的にインクリメントする必要はありません。

bannerAds