vector容器小结

vector

 一、概念

vector本质就是一个封装好的数组(也就是数组描述的线性表),使用vector可以方便快捷的实现对数组中元素进行某些操作。

二、vector的声明

1、一维数组的声明 

a、vector<T> vec(n) 声明一个有n个元素的数组,数组中的元素为T类型

vector<char> vec(10);

b、vector<T> vec(n,a) 声明一个有n个元素的数组,数组中元素为T类型,而且将数组中所有元素        初始化为a。

vector<int> vec(10,1);

c、vector<T> vec(vec1) 声明一个大小和vec1一样的数组,并且将vec1中的所有元素赋值给vec,注意,T类型和vec1的类型要相同

vector<int> vec1(10,1);
vector<int> vec(vec1); //vec中所有元素均为1

d、vector<T> vec(vec1.begin()+m,vec1.begin()+n) 声明一个大小为n-m的数组,且将vec1中的[m,n)赋值给vec (m为0时可以省略)

vector<int> vec1(10,1);
vector<int> vec(vec1.begin(),vec1.begin()+4)

e、vector<T> vec(nums+m,nums+n) 和d的声明方法相同,只是把向量vec1换成数组nums

int nums={1,2,3,4,5,6,7,8,9,10}
vector<int> vec(nums,nums+4);

2、二维数组的声明(以声明m×n的数组为例)

a、vector<vector<T>> vec(m)  声明一个大小为m的数组vec,数组元素为vector<T> 类型。

这个需要一行行输入到一个向量中,再插入到vec中

vector<vector<int>> vec(m);
vector<int> vec1(n,1);//也可以自己用循环赋值
vec.push_back(vec1);//赋值完以后可以用clear()函数清空vec1.

b、vector<vector<T>> vec(m) 和a方法基本一致,只是a方法是一个一个赋值好的向量插入到vec中,而这个是先构建好vec的大小,再去赋值。

vector<vector<int>> vec(m);
for(int i=0;i<m;++i) vec[i].resize(n)
//或者
vector<vector<int> > vec(m,vector<int>(n));

三、vector迭代器的声明

声明一个迭代器 it

vector<T>::iterator it

四、常用函数

1、begin()返回vector容器第一个元素的地址

2、end()返回vector容器最后一个元素的下一个元素的地址

3、rbegin()返回一个逆序迭代器,它指向vector最后一个元素

4、rend()返回一个逆序迭代器,它指向vector的第一个元素的位置

5、push_back(a) 在尾部插入元素a

6、insert(vec.begin()+i,a)在vec第i个元素上插入a,从第i个元素及其后面的元素全部往后移。
7、insert(vec.begin()+i,n,a)在vec第i个元素后面插入n个a
8、insert(vec.begin()+i,arr+i1,arr+j1)arr为数组,在vec的第i个元素中插入arr的[i1,j1-1]的元素

9、erase(vec.begin()+i)删除vec第i+1个元素
10、erase(vec.begin()+i,vec.begin()+j)删除区间[i,j-1],从第0个元素开始算起

11、size() 返回vector大小

12、clear() 清空vector

13、pop_back() 删除最后一个元素

14、empty() 判断vector是否为空

15、a.assign(b.begin(),b.begin()+i)将b的前i+1个元素赋给a
16、a.assign(n,x) a含有n个元素,每个元素都为x

17、a.back() 返回a的最后一个元素

18、a.front() 返回a的第一个元素

19、vec.capacity() 返回vec在内存中总共可以容纳的元素个数

20、vec.resize(n) 将vec的元素个数调至n个,多则删,少则补,其值随机
21、vec.resize(n,m) 将vec的元素个数调至n个,多则删,少则补,其值为m

22、vec.reserve(n) 将vec的容量扩充至n

23、veca.swap(vecb) 将veca中的元素和b中的元素进行整体性交换

(暂时这点了,以后继续积累再补充,拿走不送)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值