벡터를 깊게 지우는 방법?C++ STL 벡터 깊은 지우기
다음 코드를 고려하십시오.
#include<algorithm>
#include<iostream>
#include<iterator>
#include<vector>
using namespace std;
int main(){
vector<int> v {1,2,3,4,5};
for_each(begin(v),end(v),[&v](int& n){
static auto i = (int)0;
if(n == 2){
v.erase (begin(v) +2, end(v));
}
cout << n << " having index " << i++ << endl;
});
v.erase (begin(v) +2, end(v));
cout << v.size() << endl << v[4] << endl;
}
출력은
1 having index 0
2 having index 1
3 having index 2
4 having index 3
5 having index 4
2
4
나는 [내가] 어떤 난 2에서 4가 오류가 발생하는 무효 및 컴파일러되기 위해서는 V의 액세스하고 원하는 것은.
간단한 단어로 깊은 지우기 방법은 무엇입니까?
그것은 UB입니다. 혼자서 확인해야합니다. 또는 대신'std :: vector :: at'를 사용하십시오. – songyuanyao
벡터는 정의에 의해 연속적인 메모리에 요소를 저장하므로 원하는 것은 없습니다. – user463035818
그리고 컴파일 타임 오류가되기를 원합니다. – LogicStuff