6.2.1.2. vector容器
序列式容器
1.常用的数据结构(容器)及分类:数组,链表,树,栈,队列.容器可以分为 序列式 和 关联式 两种
2.序列式容器:序列式容器的元素排列的顺序与元素本身无关,其先后顺序由元素添加到容器中的顺序决定
3.常用的序列式容器:C++的STL(标准模板库),包括vector list queue dequeue(双向队列) stack priority_queue(优先队列)
注解
vector和数组的区别: 1.数组是静态的,长度不可改变,而vector可以动态扩展,增加长度 2.数组通常存储在栈区或者bss段,而vector中的数据则存储在堆上
vector容器以类模板vector<T> (T表示存储元素的类型)的形式定义在<vector>头文件中
6.2.1.2.1. 创建vector容器
#include <vector>
//此时这是一个空的vector容器,容器中没有元素,所以也没有分配空间.当添加一个元素(如push_back函数),vector会自动分配内存
std::vector<float> value;
//reserve函数可以增加容器的容量
value.reserve(20);
//创建容器并赋初始值
std::vector<int> primes {2, 4, 5, 8, 10};
//创建时指定个数, ()和{} 是有区别的,()指定数量,{}指定值
std::vector<int> values(20);
//创建容器,并全部赋值为1.5
std::vector<float> values(20, 1.5);
6.2.1.2.2. vector成员函数
函数成员  | 
函数功能  | 
begine()  | 
返回指向容器中第一个元素的迭代器  | 
end()  | 
返回容器最后一个元素后面一个位置的迭代器  | 
rbegin()  | 
返回指向最后一个元素的迭代器  | 
rend()  | 
返回指向第一个元素前面一个位置的迭代器  | 
cbegin()  | 
相比begin()增加const属性,不能用于修改元素  | 
cend()  | 
|
crbegin()  | 
|
crend()  | 
|
size()  | 
返回实际元素个数  | 
max_size()  | 
返回元素个数的最大值,这通常是一个很大的值,如2^32-1  | 
resize()  | 
改变实际元素的个数  | 
capacity()  | 
返回当前容量(内存)  | 
empty()  | 
判断容器中是否有元素,若无元素,返回true  | 
reserve()  | 
增加容器的容量  | 
shrink_to_fit()  | 
将内存减少到等于当前元素实际使用的大小  | 
operator[]  | 
重载了[]运算符,可以向访问数组中元素那样,通过下表访问vector中的值  | 
at()  | 
使用经过边界检查的索引反问元素  | 
front()  | 
返回第一个元素的引用  | 
back()  | 
返回最后一个元素的引用  | 
data()  | 
返回指向容器中第一个元素的指针  | 
assign()  | 
用新元素替换原有内容  | 
push_back()  | 
在序列的尾部添加一个元素  | 
pop_back()  | 
移除序列尾部的元素  | 
insert()  | 
在指定的位置插入一个或多个元素  | 
erase()  | 
移除一个或一段元素  | 
clear()  | 
移除所有元素,容器大小变为0  | 
swap()  | 
交换两个容器的所有元素  |