C++容器 array
C++ 11 中将数组抽象成了一个模板类array
。
array 位于名称空间 std 中,与数组一样, array 的长度是固定的,也使用栈(静态内存分配),而不是自由存储区,因此其效率与数组相同,但更方便,更安全。
零大小的数组是有效的,不应取消引用(成员 front() , back() 和 data() )。
与标准库中的其他容器不同,交换两个数组容器是一种线性操作,涉及单独交换范围内的所有元素,这通常效率较低。另一方面,这允许迭代器访问两个容器中的元素,以保持其原始容器关联。
数组容器的另一个独特功能是可以将它们视为元组对象。
模板参数(Template parameters)
template <class _Ty, size_t _Size>// _Ty是所含元素的类型,_Size是数组的大小,以元素数表示。
成员类型(Member types)
using value_type = _Ty;
using size_type = size_t;
using difference_type = ptrdiff_t;
using pointer = _Ty*;
using const_pointer = const _Ty*;
using reference = _Ty&;
using const_reference = const _Ty&;
using iterator = _Array_iterator<_Ty, _Size>;
using const_iterator = _Array_const_iterator<_Ty, _Size>;
using reverse_iterator = _STD reverse_iterator<iterator>;
using const_reverse_iterator = _STD reverse_iterator<const_iterator>;
成员函数(Member functions)
函数名 | 函数功能 |
---|---|
begin | 返回第一个元素的 iterator |
end | 返回最后一个元素的下一个元素的 iterator |
rbegin | 返回反向迭代器反向开始的 iterator |
rend | 返回反向迭代器返回到反向端点的 iterator |
cbegin | 返回第一个元素的 const_iterator |
cend | 返回最后一个元素的下一个元素的 const_iterator |
crbegin | 返回反向迭代器反向开始的 const_iterator |
crend | 返回反向迭代器返回到反向端点的 const_iterator |
size | 返回大小 |
max_size | 返回最大大小 |
empty | 测试数组是否为空 |
operator[] | 访问元素 |
at | 访问元素 |
front | 访问第一个元素 |
back | 访问最后一个元素 |
data | 获取指向数据的指针 |
fill | 用值填充数组 |
swap | 交换内容 |
get | 获取元素(元组接口) |
示例:
#include <array>
#include <iostream>
using namespace std;
const int SIZE = 100;
int main() {
//初始化,第一个参数填数据类型,第二个参数填数据个数
array<int, 0> a;
array<int, SIZE> b;
//初始化并赋值
array<int, SIZE> c{
1,2,3 };
//赋值
for (int i = 0; i < SIZE; i++) {
b[i] = rand();
}
//输出前10个
for (int i = 0; i < 10