关于 数组容器 中 erase()函数用例和原理

来源:互联网 发布:淘宝公益宝贝加权重吗 编辑:程序博客网 时间:2024/06/05 22:31
<img src="http://img.blog.csdn.net/20150411201447040?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHNncWpo/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />#include<iostream>#include<vector>using namespace std;vector<int>ls;void gq(){for(int i=0;i<10;i++)ls.push_back(i);}int main(){cout<<ls.capacity()<<endl;//定义后容器占用内存大小gq();cout<<"ls.capacity()="<<ls.capacity()<<"ls.size()="<<ls.size()<<endl;ls.clear();for(int a=11;a<13;a++)ls.push_back(a);cout<<"ls.capacity()="<<ls.capacity()<<"ls.size()="<<ls.size()<<endl;//发现只是把容器size//置为0,并没有释放内存。for(int j=0;j<10;j++)//因为内存没释放 发现元素值没有变 并且clear()后,迭代器指向第一个元素cout<<ls[j]<<endl;//才有了 11 12 2 3——盖住了前两个元素。此时 ls。end()返回//指向12的迭代器。     cout<<endl<<endl;ls.push_back(200);ls.push_back(100);vector<int>::iterator it=ls.begin()+3;for(;it!=ls.end();)//当地一个元素删除, 后面的元素整体前移,迭代器顺理成章指向第二个元素。{ls.erase(it);}//it自增1;for(vector<int>::iterator iter=ls.begin();iter!=ls.end();iter++)cout<<"lingwai ="<<*iter<<endl;cout<<"ls.capacity()="<<ls.capacity()<<"ls.size()="<<ls.size()<<endl;gq();vector<int>().swap(ls);//swap ,清除容器 ,并收回空间//for(int m=0;m<10;m++)//如果不注释,那么runtime error!//cout<<ls[m]<<endl;cout<<"ls.capacity()="<<ls.capacity()<<"ls.size()="<<ls.size()<<endl;return 0;}

0 0
原创粉丝点击