C++:erase的使用

问题

将数组拷贝到一个vector和一个list中。使用单迭代器版本的erase从list中删除奇数元素,从vector中删除偶数元素.

注意:[删除元素的成员函数并不检查[要删除的元素]是否存在,因此删除之前必须保证其存在.]erase删除deque中除首尾位置之外的任何元素都会使所有迭代器,引用,指针失效。指向vector或string中删除点之后位置的迭代器、引用和指针都会失效。

C++.
image-2046

源码


/*************************************************************************
> File Name: test.9.26.cpp
> Author: puruidong
> Mail: 1@w1520.com
> Created Time: 2014年05月15日
************************************************************************/

#include
#include
#include #include
using namespace std;
//使用下面的数组,将数组拷贝到一个vector和一个list中.使用单迭代器版本的erase从list中删除奇数元素,从vector中删除偶数元素.

int main()
{
int ia[] = {0,1,1,2,3,5,8,13,21,55,89};
size_t sizea = sizeof(ia)/sizeof(*ia);
vector vec(ia,ia+sizea);
list lis(ia,ia+sizea);
for(vector::iterator it=vec.begin();it!=vec.end();)
{//从vector中删除偶数.
if(*it%2==0)
{
it=vec.erase(it);
}else
{
++it;
}
}
for(list::iterator its=lis.begin();its!=lis.end();)
{//从list中删除奇数元素.
if(*its%2!=0)
{
its= lis.erase(its);
}else
{
++its;
}

}
for(vector::const_iterator itvec=vec.cbegin();itvec!=vec.cend();++itvec)
{//只输出不更改.
cout << "输出vector中的数据:" << *itvec << endl; } return 0; }

更多信息可参考:erase的使用

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据