(我的STL相关的博客目录:https://blog.csdn.net/Kprogram/article/details/90408011)
(vector-c++官网:http://www.cplusplus.com/reference/vector/)
vector "向量“相当于长度可以自由变换的数组,而且我们不需要关心它是如何增减元素的,直接使用即可。
如果不考虑速度,可以用vector完全替代数组
0 - 头文件:vector 命名空间:std
#include <vector>
using namespace std;
1 - 构建一个vector:vector<typename> name
typename指的是队列内数据类型,可以是 int, double, 可以是struct, class, 也可以是 vector, string等等。总之是一个数据对象都行。
name 是你构建的vector的名字,符合变量命名法则就行。
例:构建一个 int 类型的vector, 名字叫做 V。
vector<int> V;
2 - 成员函数 ( 假设你创建的vector对象名字叫 V )
(粉红色的函数为常用函数!大部分情况下这些函数就够用了)
容量和尺寸:
size():返回容量大小(元素数量)
V.maxsize():返回最大容量
empy():如果vector为空,返回True, 反之则返回 False。
resize(n):重新设置对象的长度,如果n小于size,则保留前n个数据。反之,随便增加元素到n,或者增加指定元素:V.resize(n, data)
capacity():返回vector的容量大小,容量不同于size,如果元素的数量超过了容量vector会重新分配内存,以存储更多的元素,且会造造成一些影响(具体点击这里)
reserve(n):重置vector的容量,如果n小于容量,则不会造成影响。
shrink_to_fit():缩小容量至其等于size。
遍历vector的一般方法举列:
for(int i = 0; i < V.size(); i++) {
int I = V[i];
...//对I的操作等
元素:
V[n]:跟数组一个道理。
back():返回最后一个元素的引用(意味着可以用V.back() = data修改末尾元素值)
front():返回第一个元素的引用
at(n):返回第n个元素的引用
data():返回元素的指针
修改器:
push_back(type):添加一个元素type到向量的末尾
pop_back():删除末尾元素
insert(type):插入元素type于n处
erase(V.begin() + n):删除第n个元素(假设你创建的vector名字为V)
erase(a, b):删除[a, b]内所有元素
V.swap(V1):交换 V 和 V1 两个vector的内容
clear():清除所有元素
emplace() 和 emplace_back():和push非常相似,但是可以取代push,并做出了优化。 >用法和与push的区别点这里<
(vector还有关于迭代的函数,这里不进行介绍)