请大神们指教,这个问题出现的原因和解决方法,请详细点
#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 << " ";
}
} 展开
#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 << " ";
}
} 展开
展开全部
list<int>::reverse_iterator r;
r是一个反向迭代器,反向迭代器的++操作和普通的迭代器的--操作类似,反过来反向迭代器的--操作和普通迭代器的++操作类似
for (r = listInt.rbegin(); r != listInt.rend(); r--)
{
cout << *r << " ";
}
这里的for中r--会让r从listInt.rbegin()的位置向右移动到一个未定义的地方去,所以内存错误,不能输出。
正确方法是r--改成r++
r是一个反向迭代器,反向迭代器的++操作和普通的迭代器的--操作类似,反过来反向迭代器的--操作和普通迭代器的++操作类似
for (r = listInt.rbegin(); r != listInt.rend(); r--)
{
cout << *r << " ";
}
这里的for中r--会让r从listInt.rbegin()的位置向右移动到一个未定义的地方去,所以内存错误,不能输出。
正确方法是r--改成r++
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询