求助:用普通的迭代器逆序输出vector对象时,运行报错 vector iterator not decrementable

时间:2021-02-13 04:16:17
小弟菜鸟,可能描述的不太严谨,各位大神见谅
程序编译能通过,但是运行出现结果后跳出对话框提示错误debug Assertion Failed!

#include <vector>
#include <list>
#include<iostream>
#include<algorithm>
#include<numeric>
#include<iterator>

using namespace std;

void main()
{
vector<int> ivec   ;

for(vector<int>::size_type i=0 ; i !=120; ++i)
{ ivec.push_back(i);
}

vector<int>::iterator iter1 ;   //iter2;
iter1=ivec.end();
iter1--;  
while ( iter1 >= ivec.begin() )
{
cout<<*iter1<<" ";
--iter1;
}
cout<<endl;

}

2 个解决方案

#1


原因在这段代码里
while ( iter1 >= ivec.begin() )
{
cout<<*iter1<<" ";
--iter1;
// 当执行到最后iter1==ivec.begin()的时候,--iter1就会引发断言了
}

#2


果然是这个原因,谢谢!
也就是说不能迭代器不能减到ivec.begin()前面。
刚试验过,迭代器也不能加到ivec.end()后面。

#1


原因在这段代码里
while ( iter1 >= ivec.begin() )
{
cout<<*iter1<<" ";
--iter1;
// 当执行到最后iter1==ivec.begin()的时候,--iter1就会引发断言了
}

#2


果然是这个原因,谢谢!
也就是说不能迭代器不能减到ivec.begin()前面。
刚试验过,迭代器也不能加到ivec.end()后面。