std::vectorから要素を削除する方法
ベクトルを反復処理して要素を削除するには、C++ ではイテレータを使用できます。手順は次のとおりです。
- イテレータを作成し、ベクトルの最初を指すように設定する
- イテレータを使ってベクトル全体をループで走査する。
- 繰り返しの中で、現在のイテレーターが指す要素が削除に必要とされる条件を満たすかを判定する。
- 現在の要素を消去する条件であれば、イテレータのerase()関数を使用してその要素を消去し、イテレータを次の要素に移動させます。
- 削除条件を満たさなければ、イテレータは次の要素へ進む
- ループを完了すると、削除条件を満たすすべての要素が削除されます。
以下にサンプルコードを示します。
#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() 関数で偶数という条件を満たす要素が削除されます。削除後、イテレータは自動で次の要素を指し示すようになるため、ループ内でイテレータを明示的にインクリメントする必要はありません。