std::vector::erase()
#include <vector>
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
vector에서 단일 요소(position) 또는 요소 범위( [first,last) )를 제거하는 함수이다.
제거되어 소멸되는 요소 수만큼 컨테이너 크기가 줄어든다.
벡터는 기본적으로 배열이기 때문에 요소를 지우면 모든 요소가 새 위치로 재배치된다.
일반적으로 다른 종류의 시퀀스 컨테이너(예: list 또는 forward_list )에서 동일한 작업에 비해 비효율적이다.
parameters | description |
---|---|
position | 제거할 단일 요소를 가리키는 iterator |
first | 범위의 시작 iterator 범위에 포함된다. |
last | 범위의 끝 iterator 범위에 포함되지 않는다. |
지워진 요소의 다음 요소가 재배치된 위치의 iterator를 반환한다.
vector의 마지막 요소가 제거되었다면, 크기가 줄어진 vector의 마지막 위치의 iterator를 반환한다.
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
vector<int> myvector;
// set some values (from 1 to 10)
for (int i=1; i<=10; i++) myvector.push_back(i);
cout << "myvector contains:";
for (unsigned i=0; i<myvector.size(); ++i)
cout << ' ' << myvector[i];
cout << '\n';
// erase the 6th element
myvector.erase(myvector.begin()+5);
// erase the first 3 elements:
myvector.erase(myvector.begin(),myvector.begin()+3);
cout << "myvector contains:";
for (unsigned i=0; i<myvector.size(); ++i)
cout << ' ' << myvector[i];
cout << '\n';
return 0;
}
myvector contains: 1 2 3 4 5 6 7 8 9 10
myvector contains: 4 5 7 8 9 10