1. erase 함수란?
erase()는 vector에서 특정 원소를 삭제할 때 사용하는 함수다.
주로 다음 두 가지 방식으로 사용한다.
- 특정 위치의 원소 하나 삭제
- 특정 범위의 원소 여러 개 삭제
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 위치를 기준으로 해당 원소 또는 범위를 삭제하는 함수다.
'언어 문법정리 > c++' 카테고리의 다른 글
| [C++] 문자형태의 '숫자' -> 정수 숫자로 바꾸기 (’7’ → 7) (0) | 2026.05.02 |
|---|---|
| [C++] sort() 함수 정리 (0) | 2026.05.01 |
| [C++] endl과 \n 차이점 (feat.백준 274) (0) | 2026.04.30 |
| [C++] using namespace std; 의 의미와 사용 이유 (0) | 2026.04.27 |
| [C++] Vector와 관련 함수들 (0) | 2026.04.23 |
