一、特性
概述:固定大小数组,支持快速随机访问,不能添加/删除元素,是C++11标准新增的类型
1. array对象的大小是固定的
- array不支持添加/删除元素
- array不支持改变容器大小的操作(如resize()、reverse()等)
2. array具有固定大小
- 与内置数组一样,array的大小也是类型的一部分(故不支持普通容器的构造函数),故定义array对象时,要指出容器大小。
- 与其他容器不同,一个默认构造的array对象是非空的(因为定义对象时已经给出了array对象的大小)
- 要对array对象进行列表初始化,那么列表中元素的数目要小于等于该对象的大小(和内置数组一样)
3. 优于内置数组的地方
- 可以在赋值时使用列表初始化(内置数组不支持)
- 可以在array对象之间进行赋值操作(内置数组不支持)
二、不支持的容器操作
操作 | 说明 |
array c(b, e) | 构造 c,将迭代器 b 和 e 指定的范围内的元素拷贝到 c |
c = {a, b, c ... } | 将 c 中的元素替换为列表中的元素(亲测可用) |
array c(n) array c(n, t) |
第一个是创建一个大小为n的容器,且内容是值初始化;第二个是创建一个大小为n的容器,且内容是t |
c.assign(args) |
改变容器大小 |
c.push_back(args) | 改变容器大小 |
c.emplace_back(args) | 改变容器大小 |
c.insert(args) | 改变容器大小 |
c.pop_back() | 改变容器大小 |
c.pop_front() | 改变容器大小 |
c.erase(args) | 改变容器大小 |
c.clear() | 改变容器大小 |
c.resize(args) | 改变容器大小 |
三、限定条件的操作
操作 | 说明 |
array c1(c2) array c1 = c2 |
c1初始化为c2的拷贝,要求c1和c2具有相同大小 |
array c{a, b, c ... } array c={a, b, c ...} |
c 初始化为初始化列表中元素的拷贝,要求列表中元素的数目不能大于 c 的大小 |