[c++] 반복문을 사용한 요소 삭제
벡터에서 요소를 삭제하는 가장 간단한 방법은 erase
함수를 사용하는 것입니다. erase
함수를 사용하면 컨테이너에서 특정 위치의 요소를 삭제할 수 있습니다.
예를 들어, 다음과 같은 코드로 반복문을 사용하여 벡터에서 특정 조건을 만족하는 요소를 삭제할 수 있습니다.
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6};
for (auto it = vec.begin(); it != vec.end(); ) {
if (*it % 2 == 0) {
it = vec.erase(it);
} else {
++it;
}
}
for (auto num : vec) {
std::cout << num << " ";
}
return 0;
}
위의 코드에서 erase
함수를 사용하여 조건을 만족하는 요소를 삭제하고 있습니다. 위 코드를 실행하면 홀수만 남겨져 있게 됩니다. 하지만, 주의해야 할 점은 erase
함수가 요소를 삭제한 후에도 반복자가 올바르게 유지되도록 해야 한다는 것입니다.
또 다른 방법은 erase-remove
이라는 패턴을 사용하는 것입니다. erase-remove
패턴은 특정 조건을 만족하는 요소를 찾고 이를 한번에 삭제하는 효율적인 방법입니다.
vec.erase(std::remove_if(vec.begin(), vec.end(), [](int i){ return i % 2 == 0; }), vec.end());
이 패턴은 벡터에서 특정 조건을 만족하는 모든 요소를 찾고, 이를 벡터의 끝으로 옮긴 뒤 남은 요소를 삭제하는 방식으로 동작합니다.
이러한 방법들을 사용하면 반복문을 사용하여 요소를 삭제하는 과정에서 발생할 수 있는 예기치 못한 결과를 피할 수 있습니다.