錯誤觀點:通過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)
