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