请大神们指教,这个问题出现的原因和解决方法,请详细点

#include<list>#include<iostream>usingnamespacestd;intmain(){list<int>listInt;listInt.... #include <list>
#include <iostream>
using namespace std;

int main()
{
list<int> listInt;
listInt.push_front(2);
listInt.push_front(1);
listInt.push_back(3);
listInt.push_back(4);

//从前向后显示listInt中的数据
list<int>::iterator p;
for (p = listInt.begin(); p != listInt.end(); p++)
{
cout << *p << " ";
}
cout << endl;
//从后向前显示listInt中的数据
list<int>::reverse_iterator r;
for (r = listInt.rbegin(); r != listInt.rend(); r--)
{
cout << *r << " ";
}
}
展开
 我来答
D_EVILmC
推荐于2016-01-21 · 超过16用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:36万
展开全部
list<int>::reverse_iterator r;
r是一个反向迭代器,反向迭代器的++操作和普通的迭代器的--操作类似,反过来反向迭代器的--操作和普通迭代器的++操作类似
for (r = listInt.rbegin(); r != listInt.rend(); r--)
{
cout << *r << " ";
}
这里的for中r--会让r从listInt.rbegin()的位置向右移动到一个未定义的地方去,所以内存错误,不能输出。
正确方法是r--改成r++
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式