vector内の指定された要素をイテレータを使って削除する方法は?
指定された要素を削除するために、イテレータを使うことができます。具体的な手順は以下の通りです。
- ベクトルの最初の要素を指すイテレータ変数を定義します。
- vectorをwhileループで反復処理し、イテレータがvectorの末尾を指しているかどうかを確認します。
- ループ内で、現在のイテレータが指す要素が削除すべき要素かどうかを判断します。
- 要削除する要素の場合は、erase関数を使用して現在の要素を削除し、イテレータを次の要素に移動させます。
- 削除する要素でなければ、イテレータを次の要素に移動します。
- ループが終了すると、ベクトル内の指定された要素が削除されます。
こちらはサンプルコードです。
#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ループを使用しました。