vector使用方法

一、vector概念

vector是一种可存放任意类型(类型声明时指定)、自行扩展(加倍方式)、连续存储的容器,类似于可存放任意类型动态数组。

二、使用方法

1、头文件

#include <vector>
有时需要用到算法库
#include <algorithm>

2、初始化

vector的元素类型不仅仅可以是int,double,string,还可以是结构体,但是要注意,结构体要定义为全局的,否则会出错。
  • vector<int> vec; //创建int类型的空容器vec

  • vector<int> vec(10); //创建int类型的vec,10个元素

  • vector<int> vec(10,1); //创建int类型的vec,10个元素,每个元素初值为1

  • vector<int> vec(vec2); //用同类vec2创建vec,整体复制性赋值,类似于复制构造

  • vector<int> vec(vec2.begin(),vec2.begin+8);//用同类vec2的第0个元素到第7个元素,就是最后一个不包括共8个元素,给vec初始化

  • int a[10];
    vector<int> vec(a,a+8); //和上一个类似,不过vec2换成了同类数组

  • vector<vector<int> > vec;//创建int类型的二维vec

  • vector<vector<int> > vec2(8,vector<int>(8));//创建int类型的二维vec,8行8列

3、读取元素

vector<int> a(8,8);
  • cout<<*a.begin();
    //a.begin()相当于a首元素地址指针,指针操作加*取值

  • cout<<a[0];
    //类似于数组

  • vector<int>::iterator it;//迭代器访问元素,定义迭代器it
    it=a.begin();//指向a第一个元素
    it++;//移向下一个元素
    cout<<*it;//输出,类似于指针

vector<int>::iterator it;//迭代器访问元素,定义迭代器it
for(it=a.begin();it!=a.end();it++)
	cout<<*it<<endl;

4、插入、赋值元素

vector<int> a;
vector<int> b(8,8);
int c[10]={0,1,2,3,4,5,6,7,8,9};
  • a.push_back(1);//a尾部插入元素1,元素类型要对应
  • a.insert(a.begin()+1,2);//在第1个元素位置插入2(从0开始,下同)
  • a.insert(a.begin()+1,2,3);//在第1个位置插入2个3
  • a.insert(a.begin()+1,c+2,c+4); //把数组c第2个元素到第4个元素(左闭右开)插入到a第一个位置
  • a.insert(a.begin()+1,b.begin()+2,b.begin()+4);//和上一个类似,不过b为a的相同类型
  • a.assign(8,10);//将第8个位置元素设置为10
  • copy(b.begin(), b.end(), a.begin());//将b开始到结束(左闭右开)拷贝到a
  • copy(c,c+10,a.begin());//和上一个类似,不过c为同类数组
  • a[1]=8;//危险操作,有时可以,该位置必须存在且a大小不为空

5、删除元素

vector<int> a;
  • a.clear(); //清空a中的元素
  • a.pop_back(); //删除a的最后一个元素
  • a.erase(a.begin()+1);将a第1个元素删除
  • a.erase(a.begin()+1,a.begin()+3);//把a从第一个元素到第3个元素(左闭右开)删除

6、常用算法

vector<int> a;
vector<int> b;

注:需包含头文件#include <algorithm>

  • 排序
    sort(a.begin(),a.end());
    将a从开始到结束按由小到大排序,参数可变

  • 元素颠倒
    reverse(a.begin(),a.end());
    将a从开始到结束元素颠倒,通常使用sort再用reverse达到降序的目的

  • 复制
    copy(a.begin(),a.end(),b.begin());
    将a中从开始到结束,复制到b开始的位置,参数可变

  • 查找
    find(a.begin(),a.end(),10);
    在a中从头到尾找10的位置,并返回改位置

7、其它常用工具

vector<int> a;
vector<int> b;
  • 判断是否为空
    a.empty();
    返回值:bool,判断是否为空
  • 获得现有元素个数
    a.size();
    返回值:int,现有元素个数
  • 获得容器容量
    a.capacity();
    返回值:int,容器当前空间
    注:vector为倍增容器,空间不够增加一倍,所以容器空间不一定等于元素个数
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值