1. erase 함수란?

erase()는 vector에서 특정 원소를 삭제할 때 사용하는 함수다.

주로 다음 두 가지 방식으로 사용한다.

  1. 특정 위치의 원소 하나 삭제
  2. 특정 범위의 원소 여러 개 삭제

2. 기본 사용법

  • 특정 위치 하나 삭제
vector<int>v = {10,20,30,40};

v.erase(v.begin()+1);
// v.begin() + 1 => index 1번 위치, 즉 20을 가리킴

// 결과: {10, 30, 40}


3. 주의사항

intmin_index =min_element(arr.begin(),arr.end())-arr.begin();
// 최소값이 있는 위치 번호를 구하는 코드

arr.erase(min_index);// erase에 index를 바로 넣으면 오류 발생
arr.erase(arr.begin()+min_index);// erase에 iterator를 넣어야 올바른 코드
  • min_element(arr.begin(), arr.end()) → arr의 처음부터 끝까지 보면서 가장 작은 값을 가리키는 iterator를 반환
  • erase()는 idx 번호, 즉 int를 받는 것이 아니라 iterator를 받는다

 

4. iterator란?

iterator는 쉽게 말하면 vector 안의 원소를 가리키는 손가락/포인터다.

vector<int>v = {10,20,30};

autoit =v.begin();

cout<< *it;
// iterator가 가리키는 실제 값을 의미

// 결과값: 10

 


5. 범위 삭제

vector<int>v = {10,20,30,40,50};

v.erase(v.begin()+1,v.begin()+4);

// 결과값: {10, 50}

주의할 점은 erase(시작, 끝)에서 끝 위치는 삭제되지 않는다는 것이다. 즉,

v.begin()+1~ v.begin()+3

까지만 삭제된다.


6. 결론

erase()는 iterator 위치를 기준으로 해당 원소 또는 범위를 삭제하는 함수다.

+ Recent posts