錯誤觀點:通過vector::end()能獲取指向最后一個元素的指針。
實際上,通過上面的方法獲取的是指向末尾元素再下一個位置的指針。
例子:
#include <iostream> #include <vector> using namespace std; int main() { vector<int> Int; Int.push_back(1); Int.push_back(5); vector<int>::iterator it = Int.end(); cout << *it << endl; return 0; }
程序輸出的不是5,而是131159。表明通過Int.end()並不能獲取指向容器Int中尾元素的指針。
那么如何操作才正確?實驗證明,令迭代器it = Int.end() - 1即可。
程序:
#include <iostream> #include <vector> using namespace std; int main() { vector<int> Int; Int.push_back(1); Int.push_back(5); vector<int>::iterator it = Int.end() - 1; cout << *it << endl; return 0; }
輸出5
注意的是,這里的“-1”,實際上是-sizeof(int)