当前位置:   article > 正文

C++中的vector用法详解_vector c++ 用法

vector c++ 用法

目录

一、vector介绍

1、vector(向量)

2、变量声明

二、详细的函数实现功能

1、建立一个容纳1-1000值的vector

2、使用下标访问元素

3、使用迭代器访问元素

4、插入和删除元素

三、使用vector

1、判断vector中某一元素是否存在

2、返回vector中某一个元素的下标


一、vector介绍

1、vector(向量)

C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。头文件#include<vector>。

2、变量声明

(1) 声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。(2)用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector <int *> a.同理想用向量代替三维数组也是一样,vector <int**>a;再往上面依此类推.

二、详细的函数实现功能

vector<int> ve

  1. ve.clear()          清空容器中所有数据。
  2. ve.empty()          判断容器是否为空。
  3. ve.erase(pos)         删除pos位置的数据
  4. ve.erase(beg,end)  删除[beg,end)区间的数据
  5. ve.front()          传回第一个数据。
  6. ve.back() 传回最后一个数据,不检查这个数据是否存在
  7. ve.insert(pos,elem)   在pos位置插入一个elem拷贝
  8. ve.pop_back()      删除最后一个数据。
  9. ve.push_back(elem)  在尾部加入一个数据。
  10. ve.resize(num)      重新设置该容器的大小
  11. ve.size()          回容器中实际数据的个数。
  12. ve.begin()            返回指向容器第一个元素的迭代器
  13. ve.end()              返回指向容器最后一个元素的迭代器
  14. ve.reserve()      改变当前vecotr所分配空间的大小
  15. ve.capacity() 容器容量
  16. ve.at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range
  17. ve.assign(beg,end): 将[beg; end)区间中的数据赋值给ve
  18. ve.assign(n,elem): 将n个elem的拷贝赋值给ve
  19. ve.~ vector <Elem>() 销毁所有数据,释放内存

1、建立一个容纳1-1000值的vector<int>

  1. vector<int> v;
  2. for (int i = 1; i <= 1000; ++i)
  3. {
  4. v.push_back(i);
  5. }

在大多数STL实现中,这段代码在循环过程中将会导致2到10次重新分配。

  1. vector<int> v;
  2. v.reserve(1000); //使用reserve()函数提前设定容量大小
  3. for (int i = 1; i <= 1000; ++i)
  4. {
  5. v.push_back(i);
  6. }

这在循环中不会发生重新分配。

2、使用下标访问元素

cout<<ve[0]<<endl;   //记住下标是从0开始的

3、使用迭代器访问元素

  1. vector<int>::iterator it; //用来遍历或者指向容器里面的元素
  2. for(it=ve.begin();it!=ve.end();it++)
  3. {
  4. cout<<*it<<endl;
  5. }

4、插入和删除元素

  • ve.insert(ve.begin()+i,a); 在第i+1个元素前面插入a;
  • ve.erase(ve.begin()+2); 删除第3个元素
  • ve.erase(ve.begin()+i,ve.end()+j); 删除区间[i,j-1]; 区间从0开始

三、使用vector

1、判断vector中某一元素是否存在

  1. //判断vector中某一元素是否存在
  2. bool is_element_in_vector(vector<string> v, string str)
  3. {
  4. vector<string>::iterator it;
  5. it = find(v.begin(), v.end(), str);
  6. if (it != v.end()) {
  7. return true;
  8. }
  9. return false;
  10. }

2、返回vector中某一个元素的下标

  1. //返回vector中某一个元素的下标
  2. int element_index(vector<string> v, string str)
  3. {
  4. vector<string>::iterator it;
  5. it = find(v.begin(), v.end(), str);
  6. if (it != v.end())
  7. {
  8. int res = it - v.begin();
  9. return res;
  10. }
  11. return 0;
  12. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/174598
推荐阅读
相关标签
  

闽ICP备14008679号