deque::erase
deque::erase (요소 제거)
지정한 위치 또는 범위의 요소를 컨테이너에서 제거하는 멤버 함수예요.
출처: cppreference
본문
erase는 지정된 요소를 컨테이너에서 제거해요.
iterator erase( const_iterator pos ); // (1)
iterator erase( const_iterator first, const_iterator last ); // (2)
-
pos의 요소를 제거해요.
-
[first, last)범위의 요소를 제거해요.
반환 값은 제거된 요소 뒤에 남은 요소를 가리키는 반복자(또는 그런 요소가 없으면 end())예요.
- 복잡도: 제거되는 요소 수와 제거 위치 뒤에 남는 요소 수의 최소값에 선형. 즉 중간을 지우면 그 뒤 요소들을 앞으로 당겨야 해서 선형, 양끝이면 상수에 가까워요.
- 반복자/참조 무효화: 일반적으로 제거된 요소가 컨테이너 끝이나 시작에 있는 경우를 제외하고, 모든 반복자와 참조가 무효화돼요.
std::deque<int> d{1, 2, 3, 4, 5};
d.erase(d.begin() + 1); // 2 제거 → {1,3,4,5}
d.erase(d.begin(), d.begin() + 2); // 앞의 두 개 제거
순회 중에 지우려면 지워진 다음 반복자를 다시 받아 사용해야 안전해요.
erase 멤버와 달리, 값을 기준으로 지우는 자유 함수 std::erase(container, value)(C++20)도 있어요.