음악, 삶, 개발

vector 의 erase, remove idiom 본문

개발 공부/C++ 약점공략

vector 의 erase, remove idiom

Lee_____ 2020. 10. 24. 02:40

이 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;
}