Vector(容器)

vector(容器)就像数组一样,但比数组强大很多,下面介绍一下vector常用的几种方法:

一、对于vector自身的处理,包括赋初始值,复制等等;

  vector<int> v1 ;

  vector<int> v2( 5 , 10) ;      // v2 中有5个元素,每个元素都是10

  vector<int> v3( v2 )          // 将 v2 复制给 v3

  vector<int> v4( v3.begin() , v3.end() )   // 同样是将 v3 复制给 v4 ;

  int a[] = {1,2,3,4,5} ;

  vector<int> v5( a , a + sizeof(a) / sizeof(int) )  // 将数组 a 中的元素复制给 v5 ;

二、vector::operator ;

  vector<int> v1( 5 , 10 ) ;

  vector<int> v2 ;

  v2 = v1 ;           // 相当于将 v1 复制给 v2 ;

三、vector 中的 begin 和 end 函数 ;

  begin 和 end 函数返回的都是当前指针并不是容器中的数值;

  存储当前返回指针的变量用:vector<int>::iterator iter ;

  vector<int> v( 5 , 10 ) ;

  *(v.begin())    //  输出第一个元素 ;

  *(v.end() - 1)   // 输出最后一个元素 ;

四、vector 中的 rbegin 和 rend 函数 ;

  rbegin 和 rend 函数返回的同样是指针,不过和 begin、end 返回的不同,一个是从前往后返回,一个是从后往前返回;

  存储当前返回指针的变量用: vector<int>::reverse_iterator iter ;

  *(v.rbegin())   // 输出最后一个元素 ;

  *(v.rend() - 1) //  输出第一个元素 ;

五、vector 中的 size、push_back、pop_back、inseart函数

  vector<int> v1( 5  , 10 ) ;

  v1.size()      // 返回v1 的大小 ;

  v1.push_back( 6 ) ;  // 在v1后继续添加一个元素6 ;

  v1.pop_pack() ;         // 将v1 的最后一个元素删除掉 ;

     insert  可以在vector对象的任意位置插入一个元素

  v1.insert(v1.begin() , 10) ;      // 在第一个元素的前面插入一个元素10 ;

  v1.insert(v1.begin()+1 , 10) ;    // 在第二个元素的前面插入一个元素10 ;

  v1.insert(v1.begin() , 5 , 10) ;    // 在第一个元素前面插入5个元素10 ;

  v1.insert(v1.end() , 5) ;   // 在最后插入一个元素 5 , 相当于v1.push_back(5) ;

  v1.insert(v1.end() , 5 , 10) ;     // 在最后插入5个元素10 ;

六、vector中的 resize 函数

  resize函数主要用来重新定义容器的大小,如果比当前的大,可以自定义赋初值,也可以使用默认初值0 ;如果比当前的小,只取定义的部分;

  vector<int> v1(10 , 10) ;

  v1.resize(5) ;          // 原来的十个元素,现在只剩下五个 ;

  v1.resize(12,20) ;  // 原来的十个元素现在变成了十二个,新增加的部分用20来赋值 ;

七、vector中的 at 函数

  at 函数用来在容器相应的位置存储对象;

  vector<int> v1(5 , 10) ;

  v1.at[2] = 2 ;    // 将第三个元素改为2,相当于v1[2] = 2 ;

八、vector中的 erase 函数

     erase 函数用来删除容器中的数据元素 ;

  vector<int> v1( 5 , 10) ;

  v1.erase(v1.begin()) ;    // 删除第一个元素 ;

  v1.erase(v1.begin() , v1.begin() + 3) ;    // 删除前三个元素 ;

对于vector这些好用的性质要比数组操作起来方便多了,以后要多多使用!

  

原文地址:https://www.cnblogs.com/NYNU-ACM/p/4237436.html