一维

基本用法:

(1)头文件#include <vector>
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
(5)使用迭代器访问元素.

vector<int>::iterator it;for(it=vec.begin();it!=vec.end();it++)cout<<*it<<endl;

(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(8)向量大小:vec.size();
(9)清空:vec.clear();

(1)a.assign(b.begin(), b.begin()+3); //b为向量,将b的0~2个元素构成的向量赋给a
(2)a.assign(4,2); //是a只含4个元素,且每个元素为2
(3)a.back(); //返回a的最后一个元素
(4)a.front(); //返回a的第一个元素
(5)a[i]; //返回a的第i个元素,当且仅当a[i]存在2013-12-07
(6)a.clear(); //清空a中的元素
(7)a.empty(); //判断a是否为空,空则返回ture,不空则返回false
(8)a.pop_back(); //删除a向量的最后一个元素
(9)a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+ 3(不包括它)
(10)a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5
(11)a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
(12)a.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5
(13)a.insert(a.begin()+1,b+3,b+6); //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8 ,插入元素后为1,4,5,9,2,3,4,5,9,8
(14)a.size(); //返回a中元素的个数;
(15)a.capacity(); //返回a在内存中总共可以容纳的元素个数
(16)a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
(17)a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
(18)a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100.这种操作只有在需要给a添加大量数据的时候才显得有意义,因为这将避免内存多次容量扩充操作(当a的容量不足时电脑会自动扩容,当然这必然降低性能)
(19)a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换
(20)a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<

vector 的初始化:可以有五种方式,举例说明如下:
(1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
(2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
(3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值
(4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
(5)从数组中获得初值

int b[7]={1,2,3,4,5,9,8};vector<int> a(b,b+7);

注意:

vector<int> a;
for(int i=0;i<10;i++)a[i]=i;

//这种做法以及类似的做法都是错误的,下标只能用于获取已存在的元素,而现在的a[i]还是空的对象。

vector的元素不仅仅可以是int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的。

Vector作为函数的参数或者返回值时,需要注意它的写法:
int Distance(vector&a, vector&b) 其中的“&”绝对不能少!

头文件#include<algorithm>

a.begin()(包括它)到a.end()(不包括它)
(1)reverse(vec.begin(),vec.end());将元素翻转,即逆序排列!
(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含)

(2)reverse(a.begin(),a.end()); //元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1

(3)copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素

(4)find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置

(5)sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).
可以通过重写排序比较函数按照降序比较,如下:
定义排序比较函数:
降序排序:

bool cmp(const int &a,const int &b)
{return a>b;
}
sort(vec.begin(),vec.end(),cmp);

输出Vector的中的元素 :

vector<float> vecClass;
int nSize = vecClass.size();

方法一:

for(int i=0;i<nSize;i++)
{  cout<<vecClass[i]<<"     ";
}  cout<<endl;

需要注意的是:以方法一进行输出时,数组的下表必须保证是整数。

方法二:

for(int i=0;i<nSize;i++)
{  cout<<vecClass.at(i)<<"     ";
}  cout<<endl;

方法三:输出某一指定的数值时不方便

for(vector<float>::iterator it = vecClass.begin();it!=vecClass.end();it++)
{  cout<<*it<<"   ";
}  cout<<endl;

二维

//得到一个5行3列的数组
//由vector实现的二维数组,可以通过resize()的形式改变行、列值
int i,j;
vector<vector<int>> array(5);
for (i = 0; i < array.size(); i++)array[i].resize(3);for(i = 0; i < array.size(); i++)
{for (j = 0; j < array[i].size();j++){array[i][j] = (i+1)*(j+1);}
}

打印输出:

void reverse_with_iterator(vector<vector<int>> vec)
{vector<int>::iterator it;vector<vector<int>>::iterator iter;vector<int> vec_tmp;for(iter = vec.begin(); iter != vec.end(); iter++){vec_tmp = *iter;for(it = vec_tmp.begin(); it != vec_tmp.end(); it++)cout << *it << " ";cout << endl;}
}void reverse_with_index(vector<vector<int>> vec)
{int i,j;for (i = 0; i < vec.size(); i++){for(j = 0; j < vec[0].size(); j++)cout << vec[i][j] << " ";cout << endl;}
}

vector函数用法相关推荐

  1. undistortPoints()函数用法总结

    undistortPoints()函数用法总结   函数调用:C++: void undistortPoints(InputArray src, OutputArray dst, InputArray ...

  2. 求介绍matlab函数用法的书,MATLAB初学者教程--函数用法的简单介绍

    1.4 函数用法的简单介绍 1.4.1什么是函数 似乎很多人一听到函数这个词就会想到数学中的某个概念,然后对于恐惧数学的同学就开始打退堂鼓.在matlab当中到处可以用到函数,它的出现可以让我们用很简 ...

  3. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

  4. vector 清空 Linux,STL容器vector基础用法小结

    STL容器vector基础用法小结根据<ACM程序设计>写的,用实例展示vector用法. 方法:push_back(), insert(), erase(), clear(), size ...

  5. C++ list 函数用法整理

    list 是顺序容器的一种. 底层 是一个双向链表.使用 list 需要包含头文件 list.双向链表的每个元素中都有一个指针指向后一个元素,也有一个指针指向前一个元素. list的初始化: list ...

  6. C++ search()函数用法详解(深入了解,一文学会)

    find_end() 函数用于在序列 A 中查找序列 B 最后一次出现的位置.那么,如果想知道序列 B 在序列 A 中第一次出现的位置,该如何实现呢?可以借助 search() 函数. search( ...

  7. C++ sort排序函数用法

    最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数 用 ...

  8. C++ reverse()函数用法详解(深入了解,一文学会)

    reverse_copy() 算法可以将源序列复制到目的序列中,目的序列中的元素是逆序的.定义源序列的前两个迭代器参数必须是双向迭代器.目的序列由第三个参数指定,它是目的序列的开始迭代器,也是一个输出 ...

  9. C sort 排序函数用法

    最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数 用 ...

  10. matlab stem函数坐标轴_MATLAB中stem函数用法

    stem(Y) 将数据序列Y从x轴到数据值按照茎状形式画出,以圆圈终止.如果Y是一个矩阵,则将其每一列按照分隔方式画出. stem(X,Y)在X的指定点处画出数据序列Y.  stem(...,'fil ...

最新文章

  1. Windows下Qt程序打包
  2. K12,再好的愿景遇到商业都会慢慢失去真正的目标
  3. Jsoup介绍||​​​​​​​jsoup解析url || Jsoup解析字符串||​​​​​​​Jsoup解析文件
  4. C/C++之类的前置声明
  5. 链表之判断一个链表是否为回文结构(二)
  6. 【Linux学习篇】This virtual machine is configured for 64-bit guest operating systems.……
  7. python 清华镜像_Anaconda3清华镜像 V5.3.1 最新免费版
  8. 【学习】03 淘宝爬虫-使用selenium采集关键词为电动车的数据
  9. Xtreme Report为windows开发者提供一个完善的类似于Outlook 2003报表的风格
  10. python26章_[Python设计模式] 第26章 千人千面,内在共享——享元模式
  11. 使用花生壳做内网穿透
  12. 安卓微信本地数据库解密与删除聊天记录恢复 EnMicroMsg.db FTS5IndexMicroMsg_encrypt.db
  13. C语言中IO模型实现并发服务器
  14. 计算机位置不可用d 桌面,win7系统D: 文档desktop引用了一个不可用的位置怎么办...
  15. 在移动硬盘中,安装CentOS 7双系统
  16. 怎么做极简ui设计?UI界面设计中的极简原则【萧蕊冰】
  17. 基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料)
  18. 多普勒效应 和 其的应用(测速仪、彩超、宇宙大爆炸 - 红移)
  19. android微信分享怎么自定义样式,自定义微信分享样式教程
  20. python读取文件需要的异常处理_Python基础:文件的简单读取和操作以及异常处理...

热门文章

  1. 【实习周报】2019年6月 前端开发实习工作周报汇总
  2. MySQL 导入数据 时间数据 不准确 解决办法
  3. C如何简单的读写文件?二进制文件如何读写?如何移动文件指针?
  4. 一、Scrapy爬虫概述
  5. 证券交易2-券商柜台系统
  6. 遥感图像处理之计算植被覆盖度公式
  7. 组策略锁定计算机时间,Win7电脑怎么禁止修改系统时间?两种禁止方法全教给你!...
  8. 计算机时间无法更改,电脑时间不能修改|系统时间改不了 四个解决方法
  9. 浙江学生头戴“金箍”,上课走神自动通知家长
  10. 关于wkhtmltopdf生成pdf空白