C++의 std::vector에서 특정 인덱스에 위치한 요소를 제거하려면 erase() 멤버 함수를 사용하면 됩니다. erase()는 반복자(iterator)를 인수로 받아 해당 위치의 요소를 삭제하고, 삭제된 요소 바로 다음 위치를 가리키는 반복자를 반환합니다.
예제 코드
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> v; // 벡터 선언
// 벡터에 요소 삽입
v.push_back(-10);
v.push_back(7);
v.push_back(6);
// 첫 번째 요소(v[0]) 삭제
v.erase(v.begin());
for (int i = 0; i < v.size(); i++)
cout << v[i] << " ";
return 0;
}
실행 결과
7 6
코드 설명
v.begin()은 벡터의 첫 번째 요소를 가리키는 반복자입니다. 따라서 v.erase(v.begin())을 호출하면 인덱스 0에 있는 요소인 -10이 제거되고, 나머지 요소들(7, 6)은 자동으로 앞으로 이동하여 벡터의 연속성이 유지됩니다.
특정 인덱스의 요소 삭제하기
첫 번째 요소가 아닌 임의의 인덱스 i에 있는 요소를 삭제하려면 반복자에 오프셋을 더해주면 됩니다:
v.erase(v.begin() + i); // 인덱스 i의 요소 삭제
또한 시작 반복자와 끝 반복자를 함께 전달하면 여러 개의 연속된 요소를 한 번에 제거할 수도 있습니다:
v.erase(v.begin() + start, v.begin() + end); // [start, end) 범위 삭제
단, erase()를 사용하면 삭제된 위치 뒤의 모든 요소들이 이동해야 하므로 대용량 벡터에서 잦은 삭제 작업은 성능 저하를 유발할 수 있다는 점을 유의하세요.