如何利用迭代器獲取vector的最后一個元素


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM