c++ vector数组的使用

介绍:

首先我们要明白以下几点:

1.vector数组是一个能存放任意数据类型(类,结构,普通变量类型等)的动态数组

2.和普通数组一样可以通过下标索引来进行访问

3.与其它动态序列容器相比(deques, lists and forward_lists), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。比起lists和forward_lists统一的迭代器和引用更好。

4.vector动态数组可以通过数组名进行直接赋值!  vector<yang> c;   vector<yang> b;    b = c; 

5.他的缺点:当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector并不会每次都重新分配大小。(比普通的数组具有更高的时间复杂度和空间复杂度

vector的常规操作:

vector的定义:

#include<vector>//头文件一定要有

using namespace std;//其所在的命名空间

vector<int> vec;        //声明一个int型向量

vector<int> vec1(4,1);                            //vec1的内容为1,1,1,1 
vector<int> vec(tmp); //声明并用tmp向量初始化vec向量 int arr[5] = {1, 2, 3, 4, 5}; vector<int> vec(arr, arr + 5); //将arr数组的元素用于初始化vec向量 //说明:当然不包括arr[4]元素,末尾指针都是指结束元素的下一个元素, //这个主要是为了和vec.end()指针统一。 vector<int> vec(&arr[1], &arr[4]); //将arr[1]~arr[4]范围内的元素作为vec的初始值

 数组插入元素:

1.vec.push_back(同类型量);作用是在vector的末尾插入新元素;

2.insert()第一个参数为迭代器,作用为在迭代器前面插入新元素;

3.assign(5,1)向vector中加入5个1,同时清除掉以前的元素。

  std::vector<int> vec1;  
  vec1.push_back(1);  
  vec1.push_back(2);  
//vec1元素:1,2
  std::vector<int> vec2(vec1);  //将vec1赋值给vec2
  std::vector<int>::iterator it;  
  it=vec2.begain();  
  vec2.insert(it,5);  //在第一个元素前添加5
  it=vec2.begain();  //每当新插入一个元素时内存重新分配所以要重新为迭代器分配指针
  vec2.insert(it,2,6); 
  std::vector<int> vec3(vec2);  
  vec3.assign(2,5);  //清楚所有元素只留两个5

删除元素: 

1.pop_back()删除最后一个元素。

扫描二维码关注公众号,回复: 904325 查看本文章

2.erase()删除指定位置元素。

3.clear()清除所有元素。

猜你喜欢

转载自www.cnblogs.com/yskn/p/9053161.html