[C++] 컨테이너 원소 삭제

은개·2025년 3월 6일
0

erase()

: 주어진 값을 컨테이너 내에서 실제로 삭제하고, 공백을 채우기 위하 삭제한 값 뒤의 원소들을 앞으로 당겨옴

  • 삭제된 원소 크기만큼 컨테이너 크기가 작아짐

사용 방법 01

  • 특정 위치의 원소 제거
vec.erase(삭제할 원소의 주소); 

// 예시 
vec.erase(vec.begin() + i);

사용 방법 02

  • 특정 범위의 원소 제거
vec.erase(삭제 범위의 시작 주소, 삭제 범위의 끝 주소); // 끝은 삭제 포함 X

// 예시 
vec.erase(vec.begin(), vec.begin() + i); 


remove()

: 주어진 값을 컨테이너 내에서 삭제(를 가장한 덮어쓰기)하고 마지막 인덱스 + 1 (end())을 반환

  • 삭제할 원소들의 위치에 유지될 원소들의 값으로 덮어씌움
  • 컨테이너의 크기 변화 ❌
  • 즉, 진짜로 삭제가 일어나는 것은 아님
    → 컨테이너의 뒤에 쓸데없는 데이터가 남겨짐

💡 erase()와 remove()의 차이

remove()는 컨테이너 크기 변화 ❌,
erase()는 실제로 원소를 삭제하기 때문에 컨테이너 크기 변화 ⭕️

0개의 댓글