STL容器系列文章:array容器

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值