如何利用迭代器获取vector的最后一个元素

来源:互联网 发布:网络关于蜂王蜂后寓意 编辑:程序博客网 时间:2024/05/16 07:48

错误观点:通过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)

原创粉丝点击