erase()

김민수·2025년 1월 8일

C++

목록 보기
20/68

erase() 함수는 컨테이너에서 요소를 제거할 때 사용하는 함수이다. 컨테이너 종류에 따라 동작이 약간 다르다.


1. vector의 erase()

  • 단일 요소 삭제
vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin() + 2); // 3번째 요소 삭제
// v: {1, 2, 4, 5}
  • 범위 삭제
vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin() + 1, v.begin() + 4); // 2번째부터 4번째까지 삭제
// v: {1, 5}
  • erase()를 호출하면 삭제된 요소 뒤에 있는 요소들이 앞으로 이동하며, 모든 요소가 재배치된다.
  • 시간복잡도O(n)으로, 삭제된 요소 뒤에 있는 모든 요소를 이동시키기 때문에 성능에 영향을 줄 수 있다.


2. set과 map의 erase()

setmap은 내부적으로 이진 검색 트리를 기반으로 동작하는 컨테이너이다. 키를 기준으로 요소를 삭제할 수 있다.

  • 단일 키 삭제
set<int> s = {1, 2, 3, 4, 5};
s.erase(3); // 값이 3인 요소 삭제
// s: {1, 2, 4, 5}
map<int, string> m = {{1, "one"}, {2, "two"}, {3, "three"}};
m.erase(2); // 키가 2인 요소 삭제
// m: {{1, "one"}, {3, "three"}}
  • 반복자를 사용한 삭제
auto it = s.find(4);
if (it != s.end()) {
    s.erase(it); // 4 삭제
}
  • 삭제 후 트리의 재구성이 필요하므로, 시간복잡도는 O(log n)이다.
profile
안녕하세요

0개의 댓글