vector的用法

来源:互联网 发布:用友nc系统java插件 编辑:程序博客网 时间:2024/06/18 11:28
#include <iostream>using namespace std;#include <vector>#include <algorithm>  template<typename T> void PrintContainer(T container){T::iterator iter;for(iter = container.begin() ; iter!=container.end() ; ++iter){cout<<(*iter)<<" , ";}cout<<endl;}template<typename T> void PrintContainer_Reverse( T container){T::reverse_iterator riter = container.rbegin();//逆向迭代器for ( ; riter != container.rend() ; ++riter){cout<<(*riter)<<" , ";}cout<<endl;}//void PrintContainer( vector<int> container)//{//vector<int>::iterator iter = container.begin() ;//定义vector的迭代器////container.begin()函数能够返回container这个容器的第一个元素,////并放在迭代器中//////container.end()返回容器中所有元素的下一个位置//for(    ; iter!=container.end() ; ++iter)//{//cout<<(*iter)<<" , ";//*iter:对迭代器进行解引用操作,取出////迭代器所迭代的数据内容,具体数据的内容是什么取决于////整个容器存储的数据的类型。//}//cout<<endl;//}void main(){//直接定义一个容器cout<<"========直接定义一个容器========"<<endl;vector<int> iVector1;for ( int i = 0 ; i < 5 ; ++i ){iVector1.push_back( 10*i + 1 );//在容器的后边进行插入操作}sort(iVector1.begin(),iVector1.end());//从小到大排序PrintContainer(iVector1);//由一个已经存在的容器产生一个同型容器cout<<"===由一个已经存在的容器产生一个同型容器==="<<endl;vector<int> iVector2(iVector1);PrintContainer(iVector2);//由[beg,end)区间内的元素产生一个新的容器cout<<"===由 [beg,end) 区间内的元素产生一个新的容器==="<<endl;int iArray[10] = { 98,76,54,89,8,7,6,5,90 };vector<int> iVector3(&iArray[2],&iArray[7]);PrintContainer(iVector3);//产生一个由10个8组成的新容器cout<<"===产生一个由10个8组成的新容器==="<<endl;vector<int>iVector4(10,8);PrintContainer(iVector4);////删除容器内的全部元素并释放空间cout<<"===删除容器内的全部元素并释放空间==="<<endl;iVector1.~vector<int>();iVector2.~vector<int>();iVector3.~vector<int>();iVector4.~vector<int>();//=============size()函数返回容器内元素的个数=============cout<<"===size()函数返回容器内元素的个数==="<<endl;cout<<"容器 iVector1 中的元素个数为:"<<iVector1.size()<<endl;cout<<"容器 iVector2 中的元素个数为:"<<iVector2.size()<<endl;cout<<"容器 iVector3 中的元素个数为:"<<iVector3.size()<<endl;cout<<"容器 iVector4 中的元素个数为:"<<iVector4.size()<<endl;//=========empty()函数判断容器是否为空========cout<<"===empty()函数判断容器是否为空==="<<endl;//iVector1.~vector<int>();if( iVector1.empty() ){cout<<"容器 iVector1 为空"<<endl;}else{cout<<"容器 iVector1 不为空"<<endl;}//===========容器之间的比较操作:逐个元素比较=============if(iVector3<iVector4){cout<<"  iVector3  <  iVector4  "<<endl;}else if( iVector3 == iVector4){cout<<"  iVector3  ==  iVector4  "<<endl;}else{cout<<"  iVector3  >  iVector4  "<<endl;}//==========容器的赋值操作符=============cout<<"==========容器的赋值操作符==========="<<endl;iVector1 = iVector4;PrintContainer(iVector1);//============容器的swap()操作=============cout<<"========容器的swap()操作========"<<endl;iVector2.swap(iVector1);PrintContainer(iVector1);PrintContainer(iVector2);PrintContainer(iVector3);PrintContainer(iVector4);//=======利用逆向迭代器访问容器数据========cout<<"=======利用逆向迭代器访问容器数据========"<<endl;PrintContainer_Reverse(iVector1);PrintContainer_Reverse(iVector2);PrintContainer_Reverse(iVector3);PrintContainer_Reverse(iVector4);//==============向容器中插入数据==============cout<<"====向容器中插入数据===="<<endl;vector<int>::iterator iter = iVector1.begin();++iter;//迭代器自增操作iVector1.insert(iter,3,5);PrintContainer(iVector1);//==============从容器中移除数据==============cout<<"====从容器中移除数据===="<<endl;vector<int>::iterator beg = iVector1.begin();//创建beg迭代器vector<int>::iterator end = iVector1.end();//创建end迭代器++beg;--end;--end;iVector1.erase(beg,end);PrintContainer(iVector1);//==删除所有容器中的元素,将容器置空,并不会释放内容==cout<<"==删除所有容器中的元素,将容器置空,并不会释放内容=="<<endl;iVector4.clear();PrintContainer(iVector4);cout<<"iVector4调用了clear()函数后,剩余元素个数为:"<<iVector4.size()<<endl;//==容器所能容纳的最大的元素个数==cout<<"容器所能容纳的最大的元素个数:"<<iVector1.max_size()<<endl;//==在系统重新自动分配容器内存空间之前容器所能容纳的最大元素个数==for (int i = 0 ; i < 6 ; ++i ){iVector1.push_back(2*i);}cout<<"重新分配空间前,iVector1所能容纳的最大元素个数为:"<<iVector1.capacity()<<endl;//==产生一个新容器的同时规定容器所能容纳的元素个数,主//要是为了防止容器自动重新分配空间导致程序效率降低==cout<<"=======reserve()函数的演示======="<<endl;vector<int>iVector5(4,88);iVector5.reserve(30);//手动规定了iVector5能容纳30个元素cout<<"iVector5中的元素为:"<<endl;PrintContainer(iVector5);cout<<"重新分配空间前,iVector5所能容纳的最大元素个数为:"<<iVector5.capacity()<<endl;//=========assign( n , element )函数演示=========cout<<"====assign( n , element )函数演示===="<<endl;iVector5.assign(1,66);//用n个element覆盖原始容器中的全部数据PrintContainer(iVector5);//=========assign(beg , end)函数演示=========int iArray1[10] = { 6,890,8,76,57,890,876,5};vector<int> iVector6(6,2);//用[beg,end)区间内数据覆盖原始容器中的全部数据iVector6.assign(&iArray1[3] , &iArray1[6]);PrintContainer(iVector6);//========vector元素的存取=============cout<<"vector元素存取方式1:at()函数:"<<iVector6.at(2)<<endl;cout<<"vector元素存取方式2:c[index]:"<<iVector6[1]<<endl;cout<<"获取容器第一个元素front()函数:"<<iVector6.front()<<endl;cout<<"获取容器最后一个元素back()函数:"<<iVector6.back()<<endl;//========从vector尾部直接删除一个数据pop_back()========iVector6.pop_back();cout<<"从iVector6中删除一个元素后iVector6中的剩余数据为:"<<endl;PrintContainer(iVector6);//========resize( num )函数============cout<<"resize( num )函数演示"<<endl;iVector6.resize(10);PrintContainer(iVector6);//========resize( num , element )函数============cout<<"resize( num ,element )函数演示"<<endl;iVector6.resize( 20 , 8 );PrintContainer(iVector6);system("pause");}


                                             
0 0
原创粉丝点击