在 C++ 中,vector
和数组等容器提供了 at()
成员函数来访问其元素。当使用 at()
函数访问超出容器范围的索引时,会抛出一个 std::out_of_range
异常。
而 operator[]
成员函数则允许访问任何索引的元素,无论是否越界。但是,如果访问越界,则会导致未定义的行为,可能会导致程序崩溃或其他错误。
因此,在使用 operator[]
函数时,应该确保索引在容器范围内。如果需要检查索引是否越界,可以使用容器的 size()
成员函数来获取容器的大小,并与访问的索引进行比较。
例如,以下代码使用 vector
的 at()
函数来访问元素,并检查索引是否越界:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int index = 4;
if (index >= 0 && index < vec.size()) {
std::cout << "vec[" << index << "] = " << vec.at(index) << std::endl;
} else {
std::cout << "Index out of range!" << std::endl;
}
return 0;
}
在上面的代码中,我们首先检查索引是否在容器范围内,如果是,则使用 at()
函数访问元素并输出结果;否则,输出错误信息。