STL之vector

一、vector介绍:

1.vector是一个可变大小数组的序列容器,它的大小是动态改变的,并且是被容器自动处理。

2.vector使用动态分配数组来储存它的元素,当新元素插入时,若是需要增加空间。其做法是,申请一个新的数组,但是要注意的是每次扩大不是1,而是有规律的,vs是每次扩大已有的一半,vc6.0则是扩大为原来的两倍,不同的库采用不同的策略权衡空间的使用和重新分配。

3.相比其它动态序列容器,vector在访问尾部元素更高效,是常数复杂度。其他位置的元素访问则会更低。

头文件:

1.#include<vector>

二、声明及其初始化:

1.vector<int> vec;//声明一个int型向量;当数据类型是char时,与stirng会很类似。

2.vector<int> vec(n);//声明一个大小为n的int向量。

3.vector<int> vec(n,x);//声明一个初始化为n个值都是x的向量。

4.vector<int> vec2(vec1);//用vec1初始化vec2,拷贝构造。

5.vector<int> vec2(vec1.begin(),vec1.begin()+3);//用向量vec的前三个值初始化vec2。

6.int x[5]={1,2,3,4,5};

vector<int> vec(x,x+5);//用数组的前5个元素初始化vec。

vector<int> vec(&x[1],&x[3]);//将x[1]~x[3]范围内的元素作为vec的初始值。即x[1],x[2]两个元素。

不包括x[3],这是因为末尾指针总是指着末尾的下一个位置。上面也是如此。

三、容量:

1.向量大小:vec.size();

2.向量最大容量:vec.max_size();

3.更改向量大小:vec.resize();

4.向量真实大小:vec.capacity();

5.向量判空:vec.empty();

6.减小向量大小到满足元素所占存储空间的大小:vec.shrink_to_fit();

四、迭代器

1.开始指针:vec.begin();

2.末尾指针:vec.end(); //指向最后一个元素的下一个位置

3.指向常量的开始指针: vec.cbegin(); //意思就是不能通过这个指针来修改所指的内容,但可以通过其他方式修改的,而且指针也是可以移动的。

4.指向常量的末尾指针: vec.cend();

五、修改

1.多个元素赋值:vec.assign();//和构造函数中的3、6很像。详细见STL--Reference  

http://www.cplusplus.com/reference/vector/vector/assign/

2.末尾添加元素:vec.push_back();

3.末尾删除元素:vec.pop_back();

4.任意位置插入元素:vec.insert();//示例代码可见   https://blog.csdn.net/qq_38588998/article/details/81288705

5.任意位置删除元素:vec.erase();     vec.erase(vec.begin()+4);//删除第5个     vec.erase(vec.begin(),vec.begin()+3);//删除前三个  

6.交换两个向量的元素:vec.swap();     vec1.swap(vec2);//向量vec1与向量vec2互换元素

7.清空向量元素:vec.clear();

六、元素访问

1.下标运算符:vec[1];//并不会检查越界,越界时程序崩溃

2.at()方法:vec.at(1);//检查越界,越界时抛出out of range异常

3.访问最后一个元素:vec.back();

4.访问最后一个元素:vec.front();

5.返回一个指针,并指向向量所对应的数组:int *p=vec.data();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值