{if(1== *it) { it=vec.erase(it); }else{++it; } }
vector::erase 从指定容器删除指定的元素 两个重载: iterator erase (iterator position); 删除指定位置position的元素,并返回删除元素的下一个元素的迭代器 iterator erase (iterator first, iterator last); 删除从first到last(不包过last)之间的元素 [first,last),并返回last位置迭代器 错误用法1 #include<vector...
vector::iteratoritePre; cout<<"eraseVECinwrongway"<<endl; for(itePre=myVec.begin();itePre!=myVec.end();itePre++) { myVec.erase(itePre); } printVec(myVec); 按我以前的理解,这样的循环删除方式预期的结果应该是会把vector中的数据清空,但是事实并非如此事实会导致程序崩溃因为itePre迭代器本身...
这句的意思是,取得"be"的位置(位于结尾),然后删除"be"到原vector结尾的所有元素 vector中erase用法注意事项 vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式 如下: iterator erase( iterator _Where); iterator erase( iterator _First, iterator _Last); 如...
直接veci.erase(iter)之后,iter就变成了一个野指针,对一个野指针进行 iter++ 是肯定会出错的for(autoiter=vec.begin();iter!=vec.end();){if(*iter==3)iter=veci.erase(iter);//当删除时erase函数自动指向下一个位置,就不需要进行++elseiter++;//当没有进行删除的时候,迭代器++}//3、remove删除和...
正确的写法应该是: intmain(){std::vector<int>vecInt={1,2,3,3,4,3,5,3};for(autoit=vecInt.begin();it!=vecInt.end();){if(*it!=3)it++;elseit=vecInt.erase(it);}for(auto&val:vecInt)std::cout<<val<<std::endl;}
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始 (8)向量大小:vec.size(); (9)清空:vec.clear(); 2、重要说明 vector的元素不仅仅可以是int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。
1,1,4,5,5, //返回的迭代器指向最后一位 例子:假设vector是这样的,1,3,1,3,4,5 remove(3)会变成 1,1,4,5,4,5 //返回的迭代器指向第二个4,也就是倒数第二的位置 调用vec.erase(iter,vec.end())删除所有remove中指定的元素 //iter为上一步remove返回的迭代器 ...
今天在⽤vector.erase()的时候,发现总是不能把应该erase掉的东西erase⼲净。举个栗⼦:vector<int> num_vec;num_vec.push_back(1);num_vec.push_back(3);num_vec.push_back(5);num_vec.push_back(5);num_vec.push_back(6);num_vec.push_back(5);num_vec.push_back(5);num_vec.push_back...
使用erase()方法删除指定的元素。 代码语言:javascript 复制 erase(p) 删除迭代器p所指向的元素。 代码语言:javascript 复制 #include<stdio.h>#include<vector>using namespace std;intmain(){vector<int>v;for(int i=0;i<10;i++){v.push_back(i);}for(vector<int>::size_type ix=0;ix!=v.size(...