C++标准库中的STL容器之vector

容器

容器:用来放东西的东西。在C++里,所谓容器是指用来存储一堆数据的类型。
所有容器都有迭代器,和size(), empty(), clear()用法。

vector

vector的的下标从0开始。

vector很像数组。

1. 定义

头文件:

#include <vector>

下图是一个vector类型的v

v[0]v[1]v[2]v[3]v[4]v[5]
114514

以上表格可以用以下代码定义

vector<int> v={1, 1, 4, 5, 1, 4};

我们可以定义含有指定数量的相同值的vector:

vector<int> v(6, 1);//含有6个1的vector

也可以不定初始值,这样每个元素将被赋予此类元素的缺省值

vector<int> v(6);//含有6个0的vector

注意:不能访问vector中的空元素。

vector[114514] = 1919810;//这个是错的
2. 遍历

遍历vector数组有两种方式:

第一种:普通遍历

for(int i = 0; i < v.size(); i++)
    cout << v[i] << endl;

第二种:增强迭代器遍历

for(auto i : v)
    cout << i << endl;//这种方法需要使用-std=c++11或更新的语言标准

若v.size()==0,则v中没有元素,v是空的。

3. 修改数据

使用push_back()函数可以往vector里面添加一个元素,添加后的元素在vector的最后。

v.push_back(1);//往v的尾部添加元素1

使用pop_back()函数可以把vector中的最后一个元素删除。

v.pop_back();//把v的尾部元素删除掉
4. 排序
v.begin():指向第一个元素

v.end():指向最后一个元素的后面

v.end()-v.begin():元素个数(数值等于v.size())


v.rend();   反向迭代器,指向最后一个元素

v.rbegin();  反向迭代器,指向第一个元素的前面

排序头文件:
 

#include <algorithm>

排序代码:

sort(v.begin(), v.end());//全部元素都排序(从小到大)
sort(v.begin(), v.begin() + 4);//只排序第1个到第5个元素
sort(v.rbegin(), v.rend());//从大到小排序
v[0]v[1]v[2]v[3]v[4]v[5]
114514
v.rend()v.begin()v.begin()+4v.rbegin()v.end()

方法二:
 

vector<int>::iterator vstart = v.begin();//或auto vstart=v.begin();(注释中的方法只有c++11或以上版本才能使用)

vector<int>::iterator vend = v.end();//或auto vend=v.end();(注释中的方法只有c++11或以上版本才能使用)

sort(vstart, vend);
5. vector常用的用法
  • .size()    返回长度
  • .push_back()      在尾部插入元素
  • .pop_back()      删除尾部元素
  • .empty()        为空返回1,否则返回0     
  • .clear()         清空
  • v[下标]        使用下标访问
  • .front()        指向第一个元素
  • .end()         指向最后一个元素的后面
  • .rbegin()    指向第一个元素的前面
  • .rend()    指向最后一个元素

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值