📜  C++ STL中的array :: at()(1)

📅  最后修改于: 2023-12-03 15:29:50.632000             🧑  作者: Mango

C++ STL中的array::at()

在C++ STL中,数组的一种容器类型是array。它是一个固定大小的数组,大小在编译时确定,不能动态调整。对于访问数组中的元素,我们通常可以使用下标运算符。例如,对于array<int, 5> myArray = {1, 2, 3, 4, 5};,我们可以使用myArray[2]来访问第三个元素。

但是,下标运算符不检查边界条件,容易造成数组越界的问题。为此,array容器提供了一个安全的元素访问方法,即at()。与下标运算符不同的是,at()会检查参数是否越界,如果越界则会抛出std::out_of_range异常。因此,使用at()可以避免访问越界的问题。

下面是一个使用array::at()的示例代码:

#include <array>
#include <iostream>

int main()
{
    std::array<int, 3> myArray = {1, 2, 3};

    try
    {
        std::cout << myArray.at(2) << std::endl; // 正常访问第三个元素
        std::cout << myArray.at(3) << std::endl; // 会抛出std::out_of_range异常
    }
    catch (std::out_of_range& e)
    {
        std::cout << "Caught an exception: " << e.what() << std::endl;
    }

    return 0;
}

在上面的代码中,我们定义了一个大小为3的array,并尝试使用at()方法访问第三个和第四个元素。第一个访问正常,而第二个访问会抛出异常。

值得注意的是,在实际编程中,我们应该尽量避免使用at()方法的异常处理。因为异常处理会影响程序的性能,而异常检查效率低下。因此,我们应该在程序中提前预判可能发生的越界情况,以避免异常处理的发生。

总之,array::at()是一个非常实用的方法,可以帮助我们避免数组越界的问题,但在实际应用中需要注意异常处理的开销。