大家好我是发哥,本期说说C++ array 容器
array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全,且效率并没有因此变差。
和其它容器不同,array 容器的大小是固定的,无法动态的扩展或收缩,这也就意味着,在使用该容器的过程无法借由增加或移除元素而改变其大小,它只允许访问或者替换存储的元素。
以下简单介绍array的方法:
begin() 返回指向容器中第一个元素的随机访问迭代器。
end() 返回指向容器最后一个元素之后一个位置的随机访问迭代器,通常和 begin() 结合使用。
rbegin() 返回指向最后一个元素的随机访问迭代器。
rend() 返回指向第一个元素之前一个位置的随机访问迭代器。
cbegin() 和 begin() 功能相同,只不过在其基础上增加了 const 属性,不能用于修改元素。
cend() 和 end() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
crbegin() 和 rbegin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
crend() 和 rend() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
size() 返回容器中当前元素的数量,其值始终等于初始化 array 类的第二个模板参数 N。
max_size() 返回容器可容纳元素的最大数量,其值始终等于初始化 array 类的第二个模板参数 N。
empty() 判断容器是否为空,和通过 size()==0 的判断条件功能相同,但其效率可能更快。
at(n) 返回容器中 n 位置处元素的引用,该函数自动检查 n 是否在有效的范围内,如果不是则抛出 out_of_range 异常。
front() 返回容器中第一个元素的直接引用,该函数不适用于空的 array 容器。
back() 返回容器中最后一个元素的直接应用,该函数同样不适用于空的 array 容器。
data() 返回一个指向容器首个元素的指针。利用该指针,可实现复制容器中所有元素等类似功能。
fill(val) 将 val 这个值赋值给容器中的每个元素。
array1.swap(array2) 交换 array1 和 array2 容器中的所有元素,但前提是它们具有相同的长度和类型。
下面简单通过例子,对上面的方法进行使用。
#include <iostream>
#include <string>
#include <array>
using namespace std;
int main()
{
std::array<int, 10> array_num{};
//初始化 array_num 容器为 {0,1,2,3}
for (int i = 0; i < array_num.size(); i++)
{
array_num.at(i) = i + 30;
}
//使用 get() 重载函数输出指定位置元素
cout << get<3>(array_num) << endl;
//如果容器不为空,则输出容器中所有的元素
if (!array_num.empty())
{
for (auto val = array_num.begin(); val < array_num.end(); val++)
{
cout << *val << " ";
}
}
return 0;
}
运行结果如下截图
今天就说到这,具体深入用法,可以查阅相关资料,继续研究,谢谢你的关注,记得点赞、评论和关注哦,后期会有更好的优秀作品呈现,你的支持是我创建继续创造优秀作品的动力。
明天早上六点我们继续再聊。