vector内の指定された要素をイテレータを使って削除する方法は?

指定された要素を削除するために、イテレータを使うことができます。具体的な手順は以下の通りです。

  1. ベクトルの最初の要素を指すイテレータ変数を定義します。
  2. vectorをwhileループで反復処理し、イテレータがvectorの末尾を指しているかどうかを確認します。
  3. ループ内で、現在のイテレータが指す要素が削除すべき要素かどうかを判断します。
  4. 要削除する要素の場合は、erase関数を使用して現在の要素を削除し、イテレータを次の要素に移動させます。
  5. 削除する要素でなければ、イテレータを次の要素に移動します。
  6. ループが終了すると、ベクトル内の指定された要素が削除されます。

こちらはサンプルコードです。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    int target = 3;
    auto iter = vec.begin();

    while (iter != vec.end()) {
        if (*iter == target) {
            iter = vec.erase(iter);
        } else {
            ++iter;
        }
    }

    for (auto num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

上記のコードを実行すると、出力結果は次の通りです:

1 2 4 5

上記の例では、私はイテレータiterを使用して、ベクトル内の要素を繰り返し処理しました。各ループでは、まず現在の要素が削除対象かどうかを判断し、削除対象であればerase関数を使用して現在の要素を削除し、イテレータを次の要素に移動します。削除対象でない場合は、単にイテレータを次の要素に移動します。最後に、削除された要素のベクトルを出力するためにforループを使用しました。

bannerAds