vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:

复制代码 代码如下:

#include<vector>;

一、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对象的几个重要操作,举例说明如下:

(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.rezize(10);
//将a的现有元素个数调至10个,多则删,少则补,其值随机
(17)a.rezize(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、向向量a中添加元素

复制代码
代码如下:

vector<int> a;
for(int
i=0;i<10;i++)
a.push_back(i);

2、也可以从数组中选择元素向向量中添加

复制代码
代码如下:

int
a[6]={1,2,3,4,5,6};
vector<int> b;
for(int
i=1;i<=4;i++)
b.push_back(a[i]);
 

3、也可以从现有向量中选择元素向向量中添加

复制代码
代码如下:

int
a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int>
c(a,a+4);
for(vector<int>::iterator
it=c.begin();it<c.end();it++)
b.push_back(*it);
 

4、也可以从文件中读取元素向向量中添加

复制代码
代码如下:

ifstream
in("data.txt");
vector<int> a;
for(int i;
in>>i)
a.push_back(i);

5、【误区】

复制代码
代码如下:

vector<int> a;
for(int
i=0;i<10;i++)
a[i]=i;
//这种做法以及类似的做法都是错误的。刚开始我也犯过这种错误,后来发现,下标只能用于获取已存在的元素,而现在的a[i]还是空的对象

(2)从向量中读取元素
1、通过下标方式读取

复制代码
代码如下:

int
a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(int
i=0;i<=b.size()-1;i++)
cout<<b[i]<<" ";

2、通过遍历器方式读取

复制代码
代码如下:

int
a[6]={1,2,3,4,5,6};
vector<int>
b(a,a+4);
for(vector<int>::iterator
it=b.begin();it!=b.end();it++)
cout<<*it<<" ";
 

四、几种重要的算法,使用时需要包含头文件:

复制代码
代码如下:

#include<algorithm>

(1)sort(a.begin(),a.end());
//对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
(2)reverse(a.begin(),a.end());
//对a中的从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,若存在返回其在向量中的位置

vector 用法2的更多相关文章

  1. #include <vector>用法之我见

    vector是一种顺序容器,事实上和数组差不多,但它比数组更优越.一般来说数组不能动态拓展,(何为动态拓展,即是说如果你知道你要存的数据的个数,你定义的存储数据的数组大小也就决定了,但是若你事先不知道 ...

  2. STL vector用法介绍

    STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...

  3. C++-STL:vector用法总结

    目录 简介 用法 1. 头文件 2. vector的声明及初始化 3. vector基本操作 简介 vector,是同一类型的对象的集合,这一集合可看作可变大小的数组,是顺序容器的一种.相比于数组,应 ...

  4. C++ STL之vector用法总结

    介绍 vector是表示可变大小数组的序列容器. 就像数组一样,vector也采用的连续存储空间来存储元素.也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效.但是又不像数组,它的大 ...

  5. vector用法总结(转载)

    一.vector的基本概念 vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库负责管理存储元素的相关内存.我们把vector称为容器,是因为它可以包 ...

  6. STL源代码学习--vector用法汇总

    一.容器vector 使用vector你必须包含头文件<vector>: #include<vector> 型别vector是一个定义于namespace std内的templ ...

  7. map set vector用法小总结

    1.Map 定义 #include<map> map<string,bool> mp; 插入 mp[s]=; mp.insert(make_pair(s,)); 输出 cout ...

  8. c++ vector用法详解

    1. 定义: 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)可以认为是一个动态数组,其中一个vector中的所有对象都必须是同一种类型的. 2. 构造函 ...

  9. C++中的vector 用法解析

         一.概述     vector 是C++标准模板库的部分内容,他是一个多功能的,能够操作多种 数据结构和算法 的模板类和函数库.     vector 是一个容器,它能够存放各种类型的对象, ...

  10. C++ vector用法

    在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<in ...

随机推荐

  1. WPF 入门教程DispatcherTimer计时器

    在 WinForms 中,有一个名为 Timer 的控件,它可以在给定的时间间隔内重复执行一个操作.WPF 也有这种可能性,但我们有DispatcherTimer控件,而不是不可见的控件.它几乎做同样 ...

  2. Mac安装Nvm Node开发环境

    1.什么是nvm? nvm 是 Mac 下的 node 管理工具,可以在同一台电脑上安装多个Node.js版本灵活切换. 2.安装前的准备 a. 卸载已安装到全局的 node/npm  如果之前是在官 ...

  3. python接口测试常见问题。

    一.入参问题 1.body字段类型 1.如果数据是从excel提取的那么中文数据会提示错误. 解决方法# media_value['body'] = media_value['body'].encod ...

  4. Qt设置程序图标

    修改.pro文件添加一下代码:要求.pro文件和.ico文件在同一文件夹下 RC_ICONS = xxx.ico (你的程序图标)最后重新构建一次即可

  5. htmlApk:一个轻松在线打包生成双端app应用的网站

    htmlApk平台,基于HTML打包制作APP,只要有手机网站或者HTML文件,3分钟即可生成app多端应用,同时拥有苹果版和安卓版双系统APP,快速进入移动互联时代. 全面支持h5网址打包,可设置图 ...

  6. vmhost永久免费主机搭建wordpress

    vmhost主机试用+worpress搭建 点击vmhost进入vmhost官网,vmhost提供了永久免费的主机,还附带一个三级域名,并且支自定义子域名,免费托管5G的网页空间,网页支持php语言, ...

  7. Ubuntu超方便安装显卡驱动的秘籍!不用命令行!!

    搭集群最烦的就是,显卡驱动和CUDA的问题,此前我都是命令行装的,直到,凯东哥教了我一个非常方便.傻瓜的方法,我以后再用命令行装我就是狗!! 非常的简单!在Setting里找到software &am ...

  8. 使用Apache PDFBox实现拆分、合并PDF

    目录 使用Apache PDFBox实现拆分.合并PDF 问题背景 Apache PDFBox介绍 拆分PDF 合并PDF 拆分 + 合并 完整代码 参考: 使用Apache PDFBox实现拆分.合 ...

  9. ssh远程执行命令无法使用awk的问题

    ssh执行远程命令,当使用到awk的时候总是报错,而sed和grep都没有问题 awk不支持远程执行.最近经过测试找到了解决此问题的方法. 举例:ssh 目标IP " awk '{print ...

  10. SAP SD VA01 销售订单中的自动价格更新

    场景 :当用户使用假定物料" A"创建销售订单时,确定了价格,但随后用户意识到需要更改物料,因此他们更改了订单中的物料. 现在,它显示价格已经重新确定,但是在项目条件页面中时,他们 ...