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

 我来答
匿名用户
推荐于2016-03-04
展开全部

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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式