1 概述
数组(array)是固定大小的序列容器:它们包含以严格线性序列排序的特定数量的元素。
在内部,数组除了包含的元素之外不保留任何数据(甚至不保留其大小,这是一个模板参数,在编译时是固定的)。就存储大小而言,它与使用该语言的括号语法([])声明的普通数组一样高效。这个类只添加了一层成员和全局函数,这样数组就可以用作标准容器。
与其他标准容器不同,数组具有固定的大小,并且不通过分配器管理其元素的分配:它们是封装固定大小的元素数组的聚合类型。因此,它们不能动态地展开或收缩(请参阅可以展开的类似容器的矢量(vector))。
其类图如下:
2 使用实例
void ArraySuite::access()
{
std::array<int, 5> a = {
0, 1, 2, 3, 4 };
TEST_ASSERT_EQUALS(0, a[0])
TEST_ASSERT_EQUALS(1, a[1])
TEST_ASSERT_EQUALS(2, a[2])
TEST_ASSERT_EQUALS(3, a[3])
TEST_ASSERT_EQUALS(4, a[4])
//TEST_ASSERT_EQUALS(5, a[5]) error
TEST_ASSERT_EQUALS(0, a.at(0))
TEST_ASSERT_EQUALS(1, a.at(1))
TEST_ASSERT_EQUALS(2, a.at(2))
TEST_ASSERT_EQUALS(3, a.at(3))
TEST_ASSERT_EQUALS(4, a.at(4))
bool isExcption = false;
try
{
TEST_ASSERT_EQUALS(10, a.at(10))
}
catch(std::exception const& e)
{
isExcption = true;
std::cerr << e.what() << std::endl;
}
TEST_ASSERT_EQUALS(true, isExcption)
a[0] = 10;
a.at(4) = 20;
TEST_ASSERT_EQUALS(10, a.front())
TEST_ASSERT_EQUALS(20, a.back())
TEST_ASSERT_EQUALS(10, a.data()[0])
TEST_ASSERT_EQUALS(1, a.data()[1])
TEST_ASSERT_EQUALS(2, a.data()[2])
TEST_ASSERT_EQUALS(3, a.data()[3])
TEST_ASSERT_EQUALS(20, a.data()[4])
std::array<int, 0