📜  C++ STL中的array ::运算符[](1)

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

C++ STL中的array::运算符[]

在C++ STL中,array是一种固定大小的容器,可以存储指定类型的元素。在array中,运算符[]用于访问数组中的元素。

使用方法

使用array时,可以使用运算符[]来访问其元素,其使用方法与普通的数组相同。例如,定义一个包含5个整数的array并将第四个元素设置为10的代码如下所示:

#include <array>
#include <iostream>

int main() {
    std::array<int, 5> arr = {1, 2, 3, 4, 5};
    arr[3] = 10;
    std::cout << arr[3] << std::endl;
    return 0;
}

输出为:

10
取值范围

使用运算符[]来访问数组中的元素时,需要注意其取值范围。如果使用的下标超出了数组的范围,会导致程序崩溃。例如,对一个包含5个元素的数组使用下标为6的代码如下所示:

#include <array>
#include <iostream>

int main() {
    std::array<int, 5> arr = {1, 2, 3, 4, 5};
    std::cout << arr[6] << std::endl;
    return 0;
}

该程序会导致运行时错误,输出如下:

terminate called after throwing an instance of 'std::out_of_range'
  what():  array::at: __n (which is 6) >= _Nm (which is 5)

这是因为在C++ STL中,如果使用运算符[]访问数组时,下标超出数组范围就会引发std::out_of_range异常。

为了避免下标超出范围的错误,可以使用array的成员函数at()来进行访问。如果使用的下标超出了数组的范围,它将引发std::out_of_range异常。例如,使用at()函数来访问数组中的元素的代码如下所示:

#include <array>
#include <iostream>

int main() {
    std::array<int, 5> arr = {1, 2, 3, 4, 5};
    std::cout << arr.at(6) << std::endl;
    return 0;
}

该程序会输出如下错误信息:

terminate called after throwing an instance of 'std::out_of_range'
  what():  array::at: __n (which is 6) >= _Nm (which is 5)
总结

在C++ STL中,array::运算符[]可用于访问array中的元素。必须注意访问范围,否则会导致程序异常。因此,使用at()函数可以更安全地访问数组的元素。