在 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()
函數訪問元素并輸出結果;否則,輸出錯誤信息。