음악, 삶, 개발
vector 의 erase, remove idiom 본문
이 2가지를 외우자.
erase : vector 의 요소를 삭제한다.
remove : vector 의 요소를 이동시킬뿐. (= Move assignment 를 호출한다), 요소를 삭제하지않는다.
따라서 이 2가지가 적절히 섞여야한다.
아래의 코드를 암기하여 사용하도록 한다.
int main() {
std::vector<int> vec {1, 2, 3, 4};
// remove a element by index
vec.erase(vec.begin() + 1);
// remove elements between the index
vec.erase(vec.begin(), vec.end() - 1);
// remove elements by value
vec.erase(std::remove(vec.begin(), vec.end(), 1), vec.end());
// remove elements if my condition is true.
vec.erase(std::remove_if(vec.begin(), vec.end(), [](int i) { return i == 1; }), vec.end());
return 0;
}