概述
1. 头文件
#include <array>
2. 定义
- C11中引入,静态数组,序列式容器。array可以看做普通数组添加了成员函数,使得数组能够被当成标准容器来使用。容器的大小固定,无法动态扩展或收缩。定义一个array时,除了指定元素类型,还要指定容器大小。
- array以类模板的形式定义:
namespace std {
template<typename T, size_t N>
class array;
}
array<T, N>
// T: 用于指明数据类型
// N:表示容器大小,只能是常量不能是变量
3. 对象创建
方法 | 说明 |
---|---|
array<int, 3> arr = {1, 2, 3}; | 定义类型为int,大小为3的数组并初始化为{1, 2, 3} |
array<int, 10> arr = {1, 2, 3}; | 前三个元素赋值,后7个元素为0 |
array<double, 10> arr = {1.5, 2.0, 1.0}; | double类型数组,前三个元素赋值,后7个元素为0.0 |
array<int, 3> arr = {0}; | 所有元素初始化为0 |
array<int, 3> arr; | 未初始化,是垃圾值,不推荐 |
array<int, 3> arr = {}; | 未初始化,比上一种方式好 |
array<int, 0> arr; | 合法定义,size为0,元素为某个未知的值 |
array<int, 3> arr({1, 2, 3}); | 定义非法!没有定义这种类型的拷贝构造函数 |
- 拷贝构造:
array<int, 3> arr1 = {1, 2, 3}; // 方式1
array<int, 3> arr2 = arr1; // 方式2
array<int, 3> arr3(arr1); // 方式3
- 二维数组
array<array<int, 5>, 5> mat1 = {
1,2,3,4,5,
1,2,3,4,5,
1,2,3,4,5,
1,2,3,4,5,
1,2,3,4,5,
};
4. 常用方法
- 大小
方法 | 说明 |
---|---|
arr.size() | 容器元素个数 |
arr.max_size() | 容器所能容纳的最大元素个数 |
arr.empty() | 判断容器是否为空 |
- 访问
方法 | 说明 |
---|---|
array<int, 3> arr = {1, 2, 3}; arr[1]; 或 arr.at(1); | []或at()方式访问 |
arr.front(); arr.back(); | front()和back()不要为空时访问首尾元素 |
arr.data(); | 获取第一个数据的指针,也就是数组首地址 |
- 比较
/* 可以用> < ==来比较两个array数组 */
std::array<int,5> a = {10, 20, 30, 40, 50};
std::array<int,5> b = {10, 20, 30, 40, 50};
if (a == b) {
std::cout << "a == b" << std::endl;
}
- 迭代器
方法 | 说明 |
---|---|
begin()/end() | 正向迭代器 |
rbegin()/rend() | 反向迭代器 |
cbegin()/cend() | const正向迭代器 |
crbegin()/crend() | const反向迭代器 |
- 交换swap:两个容器元素类型和个数相同
方法 | 说明 |
---|---|
arr1.swap(arr2); | 方式1 |
swap(arr1, arr2); | 方式2 |
- 其他函数
- fill函数:arr.fill(value); // 使用value值填充数组所有元素
std::array<int, 5> arr;
arr.fill(5); // fill,5个元素值都为5
for (auto i : arr) {
std::cout << i << " ";
}
参考文章:
array介绍
array定义和常用方法
推荐阅读
created by shuaixio, 2021.07.25
最后
以上就是怕孤单汽车为你收集整理的STL容器系列文章:array容器的全部内容,希望文章能够帮你解决STL容器系列文章:array容器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复