vector数组的基本定义与使用方法总结

自己救自己系列, 找工作刷题做点总结。今年找工作形式这么严峻,我还能怎么办?我也很绝望啊!

vector刷题时候用的地方也太多了吧,这个要熟练掌握啊

 

1、定义

     1)vector数组是一个能存放任意数据类型(类,结构,普通变量类型等)的动态数组

     2)和普通数组一样可以通过下标索引来进行访问

     3)与其它动态序列容器相比(deques, lists and forward_lists), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。比起lists和forward_lists统一的迭代器和引用更好。

    参考: https://www.cnblogs.com/yskn/p/9053161.html

2、初始化

vector<T> a;           //初始化一维数组 T表示数据类型,如int, float, string
vector<vector<T>> b;   //初始化二维数组
vector<T> a(n,i);      //初始化一维数组a中包含n个i
vector<vector<int>> b(m, vector<T>(n,1))   //初始化二维数组b[m][n]为1

/*
今天刷题遇到:

str = "asd";
vector<string> tmp(1, str);

死活搞不懂(1, str)什么意思
后来发现失了智, 那不就是对tmp初始化1个str吗?
*/

 

3、使用

//获得长度
a.size()

//判断是否为空
a.empty()                    //空返回true,否则返回false

//获得二维数组的行列
int row = b.size();          //获得行数
int col = b[0].size();       //获得列数

//排序
sort(a.begin(), a.end())     //注意是begin(),不是start()

//元素添加删除操作
a.push_back(1);              //末尾添加一个元素1
a.pop_back();                //删除末尾元素
a.back();                    //访问最后一个元素
a.insert(a.begin(), elem);   //在a序列首位添加一个元素elem

4、lower_bound  和 upper_bound

     lower_bound: 返回有序数组不小于指定num的第一个数。

     upper_bound: 返回有序数组大于指定num的第一个数。     

//利用lower_bound实现插入排序

auto it = lower_bound(res.begin(), res.end(), num);
res.insert(it, num);

     👆题目练习: 牛客网->剑指offer63题 :数据流中的中位数 

以后刷到哪里再更

 

5、题目练习

数组的二分法          查找排序数组中某元素的第一个和最后一个

字母异位词分组      这个题目可以冷静区分一下vector和单独的string的区别

加一                        练习一下首位插入

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值