array是 C++ 标准库提供的一种容器,它表示一个固定大小的数组。与 C 语言中的原始数组相比, array提供了更多的功能和安全性。以下是一些 array的特点和用法:
-
固定大小: array的大小是在编译时确定的,并且不能改变。它提供了静态的大小信息,可以通过sie()成员函数获取元素的数量。
-
安全访问: array提供了at()成员函数进行边界检查,确保访问元素时不会越界。与使用原始数组的
[]
操作符相比at()更安全,但也会引入一些开销。 -
迭代器支持: array支持正向迭代器和常量正向迭代器,可以使用迭代器遍历容器中的元素。
-
元素访问:可以使用[] 运算符或at() 成员函数通过索引访问元素。还可以使用front()和back()成员函数分别获取第一个元素和最后一个元素。
-
值填充: array提供了fill()成员函数,可以将容器中的所有元素设置为指定的值。
-
初始化和赋值:可以通过列表初始化或使用
=
运算符进行初始化和赋值。
一.使用前准备工作:
#include<array> //包含 <array> 头文件,以便在代码中使用array容器的功能。
using namespace std;
//命名空间声明,使得代码中的标识符不需要加上 std:: 前缀来使用 std 命名空间中的内容,包括 //std::array在内。
array<int,5> arr;
//定义了一个名为 arr 的变量,并确定其有5个元素,这行代码创建了一个空的arr 对象,可以在后续的代码中添加、删除和访问元素。
arr = {1, 2, 3, 4, 5}; //为数组容器array添加元素,这里的12345是数组从头到尾每个结点所对应存储的数据
二.常用vector类的成员函数:
1 | arr.size() | 返回返回容器arr中的元素个数的个数 |
2 | arr.fill(element) | 可用于初始化时,将arr所有元素均填充为指定的element |
3 | arr.at() | 返回指定位置的元素的引用,并进行边界检查,越界报错 |
4 | arr[index] | 运算符通过索引访问容器中的元素,不进行边界检查: |
5 | arr.front() | 函数返回容器的第一个元素 |
6 | arr.back() | 函数返回容器的最后一个元素 |
7 | arr.size() | 函数返回容器中的元素个数: |
8 | arr.max_size() | 返回容器可以容纳的最大元素数 |
9 | arr.begin() | 返回指向容器第一个元素的迭代器。 |
10 | arr.end() | 返回指向容器最后一个元素的后面一个位置的迭代器。 |
三.代码示例:
1.size():
// 初始化数组arr
array<int, 5> arr = {1, 2, 3, 4, 5};
int arr_size = arr.size();
printf("数组arr元素数量:%d\n", arr_size);
//输出:
数组arr元素数量:5
2.fill():
// 定义数组arr
array<int, 5> arr;
// 将数组所有元素填充为 1
arr.fill(1);
printf("数组arr元素:\n");
for (int i = 0; i < arr.size(); i++)
{
auto it = arr.begin() + i;
printf("%d ", *it);
}
//输出:
数组arr元素:
1 1 1 1 1
3.at():
// 定义并初始化数组arr
array<int, 5> arr = {1, 2, 3, 4, 5};
printf("数组arr元素:\n");
for (int i = 0; i < arr.size(); i++)
{
printf("第%d个元素:%d \n", i + 1, arr.at(i));
}
//输出:
数组arr元素:
第1个元素:1
第2个元素:2
第3个元素:3
第4个元素:4
第5个元素:5
4.front()和把back():
// 定义并初始化数组arr
array<int, 5> arr = {1, 2, 3, 4, 5};
int a = arr.front();
printf("数组arr第一个元素:%d\n", a);
int a = arr.back();
printf("数组arr最后一个元素:%d\n", b);
//输出:
数组arr第一个元素:1
数组arr最后一个元素:5
5.max_size():
// 定义并初始化数组arr
array<int, 5> arr = {1, 2, 3, 4, 5};
int capacity = arr.max_size();
printf("数组arr的最大容量:%d\n", capacity);
//输出:
数组arr的最大容量:5
6.begin()和end():
// 定义并初始化数组arr
array<int, 5> arr = {1, 2, 3, 4, 5};
auto it = arr.begin();
printf("数组arr第一个元素为:%d\n", *it);
auto it1 = arr.end() - 1;
printf("数组arr最后一个元素为:%d\n", *it1);
//输出:
数组arr第一个元素为:1
数组arr最后一个元素为:5