在 C++ 中,vector
和數(shù)組等容器提供了 at()
成員函數(shù)來訪問其元素。當(dāng)使用 at()
函數(shù)訪問超出容器范圍的索引時,會拋出一個 std::out_of_range
異常。
而 operator[]
成員函數(shù)則允許訪問任何索引的元素,無論是否越界。但是,如果訪問越界,則會導(dǎo)致未定義的行為,可能會導(dǎo)致程序崩潰或其他錯誤。
因此,在使用 operator[]
函數(shù)時,應(yīng)該確保索引在容器范圍內(nèi)。如果需要檢查索引是否越界,可以使用容器的 size()
成員函數(shù)來獲取容器的大小,并與訪問的索引進(jìn)行比較。
例如,以下代碼使用 vector
的 at()
函數(shù)來訪問元素,并檢查索引是否越界:
#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;
}
在上面的代碼中,我們首先檢查索引是否在容器范圍內(nèi),如果是,則使用 at()
函數(shù)訪問元素并輸出結(jié)果;否則,輸出錯誤信息。