C++容器之数组(std::array)

发布于:2024-05-22 ⋅ 阅读:(57) ⋅ 点赞:(0)

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

网站公告

今日签到

点亮在社区的每一天
去签到