程序编译能通过,但是运行出现结果后跳出对话框提示错误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就会引发断言了
}
while ( iter1 >= ivec.begin() )
{
cout<<*iter1<<" ";
--iter1;
// 当执行到最后iter1==ivec.begin()的时候,--iter1就会引发断言了
}
#2
果然是这个原因,谢谢!
也就是说不能迭代器不能减到ivec.begin()前面。
刚试验过,迭代器也不能加到ivec.end()后面。
也就是说不能迭代器不能减到ivec.begin()前面。
刚试验过,迭代器也不能加到ivec.end()后面。
#1
原因在这段代码里
while ( iter1 >= ivec.begin() )
{
cout<<*iter1<<" ";
--iter1;
// 当执行到最后iter1==ivec.begin()的时候,--iter1就会引发断言了
}
while ( iter1 >= ivec.begin() )
{
cout<<*iter1<<" ";
--iter1;
// 当执行到最后iter1==ivec.begin()的时候,--iter1就会引发断言了
}
#2
果然是这个原因,谢谢!
也就是说不能迭代器不能减到ivec.begin()前面。
刚试验过,迭代器也不能加到ivec.end()后面。
也就是说不能迭代器不能减到ivec.begin()前面。
刚试验过,迭代器也不能加到ivec.end()后面。