<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; }
时间: 2024-10-13 13:42:56