array容器
定义:
array 容器以类模板的形式定义在 头文件,并位于命名空间 std 中
namespace std{
template <typename T, size_t N>
class array;
}
T 用于指明容器中的存储的具体数据类型,N 用于指明容器的大小,需要注意的是,这里的 N 必须是常量,不能用变量表示
在创建 array 容器的实例时,也可以像创建常规数组那样对元素进行初始化
array容器成员函数汇总
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8nO2yQlL-1690622085755)(array.png)]
array随机访问迭代器
array 容器模板类中的 begin() 和 end() 成员函数返回的都是正向迭代器,它们分别指向「首元素」和「尾元素+1」 的位置。在实际使用时,我们可以利用它们实现初始化容器或者遍历容器中元素的操作
array 模板类中还提供了 rbegin()/rend() 和 crbegin()/crend() 成员函数,它们每对都可以分别得到指向最一个元素和第一个元素前一个位置的随机访问迭代器
访问元素
为了能够有效地避免越界访问的情况,可以使用 array 容器提供的 at() 成员函数
如:
values.at (4) = values.at(3) + 2.O*values.at(1);
例子:
#include <iostream>
//需要引入 array 头文件
#include <array>
using namespace std;
int main()
{
std::array<int, 8> values{};
//初始化 values 容器为 {0,1,2,3...8}
for (int i = 0; i < values.size(); i++) {
values.at(i) = i;
}
//使用 get() 重载函数输出指定位置元素
cout << get<3>(values) << endl;
//如果容器不为空,则输出容器中所有的元素
if (!values.empty()) {
for (auto val = values.begin(); val < values.end(); val++) {
cout << *val << " ";
}
}
}
例子:
#include <iostream>
//需要引入 array 头文件
#include <array>
using namespace std;
int main()
{
array<int, 5>values;
int h = 1;
auto first = values.rbegin();
auto last = values.rend();
//初始化 values 容器为 {5,4,3,2,1}
while (first != last)
{
*first = h;
++first;
h++;
}
//重新遍历容器,并输入各个元素
first = values.rbegin();
while (first != last)
{
cout << *first << " ";
++first;
}
return 0;
}```