使用vector需要包含头文件vector

构造函数

C++vectors 可以使用以下任意一种参数方式构造:
语法

vector();
vector(size_type num, const TYPE &val);
vector(const vector &from);
vector(input_iterator start,input_iterator end);

解释

  • 无参数:构造一个空的vector
  • 数量(num)和值(val):构造一个放入num个数值为val 的元素的vector
  • vector(from):构造一个与vector from相同的vector
  • 迭代器(start)和迭代器(end):构造一个初始值为[start,end)区间元素的vector(此处区间是左闭右开)。

举例
下面这个实例构造了一个包含5个元素的vector,里面的值全是0.

vector<int> v(5,0);

运算符

语法:

v1 == v2
v1 != v2
v1 <= v2
v1 >= v2
v1 < v2
v1 > v2
v[]

解释
C++ vector能使用标准运算符:==,!=,<=,>=,<和>.
要访问vector中某特定位置的元素可以使用 []操作符。

两个vector相等,需要满足:

  1. 它们具有相同的容量
  2. 所有相同位置的元素相等

vectors之间大小的比较是按照字典序

back() 函数 & front() 函数

语法

TYPE back();

解释
back()函数返回当前vector最末一个元素的引用
front()函数返回当前vector起始元素的引用

vector<int> v;//构造 for(int i=0;i<10;i++)v.push_back(i);  cout<<"the first element is: "<<v.front()<<endl;cout<<"the last element is:" <<v.back()<<endl;

push_back() 函数 & pop_back() 函数

语法

void push_back(const TYPE &val);
void pop_back();

解释
push_back()添加值为val的元素到当前vector末尾
pop_back() 函数删除当前vector最末的一个元素

举例
字符vector删除末尾元素并打印

vector<char> alphaVector;for(int i=0;i<10;i++)alphaVector.push_back(i+65);//添加元素 int size=alphaVector.size();vector<char>:: iterator Iter;//实例化迭代器 for(int i=0;i<size;i++){alphaVector.pop_back();//删除元素 for(Iter=alphaVector.begin();Iter!=alphaVector.end();Iter++) cout<<*Iter;cout<<endl;}

结果

ABCDEFGHI
ABCDEFGH
ABCDEFG
ABCDEF
ABCDE
ABCD
ABC
AB
A

最后
vector中使用sort()排序,默认顺序为升序。
此例打印初始化时前10个元素,与排序后前10个元素

#include<iostream>
#include<algorithm>
#include<vector>
const int maxn=1e5;//10w规模 using namespace std;int main()
{vector<int> v;//构造 for(int i=0;i<maxn;i++)//初始化v.push_back(maxn-i);for(int i=0;i<10;i++)//打印前10个元素cout<<v[i]<<" "; cout<<endl;sort(v.begin(),v.end());//从小到大排序for(int i=0;i<10;i++)//排序后打印前10个元素cout<<v[i]<<" ";
}

结果

100000 99999 99998 99997 99996 99995 99994 99993 99992 99991
1 2 3 4 5 6 7 8 9 10

二维数组初始化

借助二维数组,C++ 98 不支持 vector={…}列表初始化

//C++98
vector<vector<int> > grid(3);int a[2][3]={1,2,3,4,5,6};for(int i=0;i<2;i++)for(int j=0;j<2;j++)grid[i][j]=a[i][j];

注意

二维vector的写法
vector<vector > grid(3);
不要写成vector<vector > grid;
后续无法进行遍历,因为vector大小不知

二维数组遍历

迭代器遍历:使用两个迭代器

vector<vector >::iterator iter;//第一层迭代器
vector::iterator it;//第二层迭代器

//vector二维数组的遍历void byIterator(vector<vector<int> >& vec){vector<vector<int> >::iterator iter;//第一层迭代器vector<int>::iterator it;//第二层迭代器vector<int> vec_temp;//临时变量,存储vectorfor(iter=vec.begin();iter!=vec.end();iter++){vec_temp=*iter;for(it=vec_temp.begin();it!=vec_temp.end();it++)cout<<*it<<" ";cout<<endl;}   }

二维vector的大小

行grid.size()
列grid[0].size()

vector<vector > grid(5);
cout<<grid.size()<<endl; //行数
cout<<grid[0].size()<<endl;//列数

举例,在一道简单的动态规划(DP)题解中使用。

int minPathSum(vector<vector<int>>& grid) {int m=grid.size();//行数int n=grid[0].size();//列数vector<vector<int>> f(m,vector<int>(n,0));//m*n两维vector,全零//状态f[0][0]=grid[0][0];for(int i=1;i<n;i++)f[0][i]+=grid[0][i]+f[0][i-1];f[0][0]=grid[0][0];for(int i=1;i<m;i++)f[i][0]+=grid[i][0]+f[i-1][0];//转移for(int i=1;i<m;i++)for(int j=1;j<n;j++)f[i][j]=grid[i][j]+min(f[i-1][j],f[i][j-1]);return f[m-1][n-1];}

c++STL之vector简易使用相关推荐

  1. STL 之vector详解

    STL之vector容器详解 vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样 ...

  2. C++ STL之vector常用方法

    C++ STL之vector常用方法 头文件 #include<vector> 初始化方法 vector<int> v; //初始化一个int类型.size为0的vectorv ...

  3. c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件

    Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...

  4. C++STL的vector容器

    C++STL的vector容器 vector容器 vector基本概念 vector构造函数 vector赋值操作 vector容量和大小 vector插入和删除 vector数据存取 vector互 ...

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

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

  6. oracle erase,c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件

    Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...

  7. STL中Vector的内存分配机制

    一些好的公司校园招聘过程中(包括笔试.面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析.今天看了下相关文章,也写了几个小的测试程序跑了跑.算是总结下,希望对需要的 ...

  8. C++ [STL之vector模拟实现]

    本文已收录至<C++语言和高级数据结构>专栏! 作者:ARMCSKGT STL之vector模拟实现 前言 正文 空间结构 默认成员函数 构造函数 拷贝构造函数 赋值重载 析构函数 关于数 ...

  9. STL中vector、list、deque和map的区别

    vector 向量 相当于一个数组     在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy( ...

最新文章

  1. Maven 手动添加 JAR 包到本地仓库
  2. 手机Excel怎么转换成PDF方法
  3. 【多线程高并发】深入浅出JMM-Java线程内存模型
  4. python查询天气
  5. Intel INDE(集成原生开发人员体验)的Windows开发指导
  6. 创业感悟:技术兄弟为什么一直没有起来(1)
  7. PoE交换机的选择和使用注意事项介绍
  8. 理解允许定位,音频,网络电话..
  9. 九、索引与执行计划、索引的分类
  10. BZOJ-3227 红黑树(tree) 树形DP
  11. 二维连续傅里叶变换对
  12. python 判断三角矩阵 pta
  13. 亚马逊开店pdf_Amazon S3教程–最终指南(PDF下载)
  14. Qt进阶-汉字转拼音/全拼
  15. WordPress使用邮箱服务功能
  16. 天线3db波束宽度_波束宽度
  17. elasticsearch中忽略大小写模糊搜索实现
  18. learning scala type alise
  19. 封装CopyFileEx函数,实现文件复制中的暂停,控速,获取进度
  20. MediaSession和MediaSessionService的交互流程梳理

热门文章

  1. 洛谷P1330 封锁阳光大学
  2. linux tomcat 突然验证码出不来
  3. 移动前端html5 head 头标签
  4. 快速生成解决方案 ctrl + shilf + b
  5. MySQL Access denied错误的缘故情由
  6. mount查看linux分区大小,Linux磁盘管理----分区格式化挂载fdisk、mkfs、mount
  7. 【Paper】2021_Consensus Control of Leader-Following Multi-Agent Systems in Directed Topology
  8. 【数理知识】《数值分析》李庆扬老师-第8章-矩阵特征值计算
  9. 【数理知识】《矩阵论》方保镕老师-第7章-几类特殊矩阵与特殊积
  10. 【体验】18650锂电池充电器体验,功能测试,18650充电测试