Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ std::vector에서 인덱스로 요소 제거하는 방법

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()를 사용하면 삭제된 위치 뒤의 모든 요소들이 이동해야 하므로 대용량 벡터에서 잦은 삭제 작업은 성능 저하를 유발할 수 있다는 점을 유의하세요.