根据个人习惯,认为应该多用vector容器,因为array较传统数组功能并没有更大的扩展,只是提高了操作的安全性;且array是定长容器(不能通过array<int, n> a
进行初始化)
vector
vector是一个动态数组,不排序
一些基本操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
181.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.at **得到编号位置的数据**
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针
6.front 得到数组头的引用
7.back 得到数组的最后一个单元的引用
8.max_size 得到vector最大可以是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另一个vector交换数据将两个
vector
进行合并1
2
3
4
5
6vector<int> vec1 = {...};
vector<int> vec2 = {...};
vector<int> vec3;
vec3.insert(vec3.end(), vec1.begin(), vec1.end());
vec3.insert(vec3.end(), vec2.begin(), vec2.end());
array
std::array
是在C++11中才引入的,与内置数组相比,array是一种更安全、更容易使用的数组类型。与内置数组类似,array对象的大小是固定的。因此,array不支持添加和删除元素以及改变容器大小的操作。与内置数组一样,标准库array的大小也是类型的一部分。当定义一个array时,除了指定元素类型,还要指定容器大小。
array于数组的区别异同
相同点
- 均可以使用下表运算符对元素进行操作,即array针对下标运算符[]进行了重载
- 在内存的方面都使用连续内存,即array的底层存储结构均使用数组
- array也是一个定长容器(这与vector区别)
不同点
array提供了更好的数据访问机制
1
2
3
4at begin end(指针,最后一个元素后的地址)
// begin end通过++操作可以遍历数组
front back(引用,最后一个元素)array提供了更好的遍历机制
array提供了size()和判空的获取机制,而数组只能通过遍历或者通过额外的变量记录数组的size
array提供了两个容器对象的内容交换,即swap的机制
array提供了初始化所有成员的方法fill
array支持更多c++11的特性,操作更加安全