矢量 动态增长 vector.push_back 跳错 vector iterator not dereferencable

贴一下我的程序,功能方面没调试;可以编译通过,但是输出的时候跳出vectoriteratornotdereferencablevectoriteratornotderef... 贴一下我的程序,功能方面没调试;
可以编译通过,但是输出的时候跳出vector iterator not dereferencable
vector iterator not dereferencable
#include<iostream>
#include<vector>
using std::cin;
using std::cout;
using std::vector;
using std::endl;
/*****************************
这是一个计算阶乘的小程序
输入多组数据
每一行代表多少阶乘
例:
4
5
15

输出
24
120
1307674368000
******************************************/

int main()
{
int order_num;
while(cin>>order_num)
{
vector<int> a;
a.push_back(1);
for(int i = 2;i<=order_num;++i)
{
for(vector<int>::iterator iter=a.begin();iter !=a.end();++iter)
{
(*iter)*=i;
}
//判断是否是超过十 ,超过十进位
for(vector<int>::iterator itera=a.begin(),iterb=a.end();itera !=iterb;++itera)
{
if(*itera >=10)
{
if(itera == iterb-1)
{
a.push_back((*itera)/10);//如果把这句话注释掉就不会跳错
*itera %=10;
}
else
{
*(itera+1)+=((*itera)/10);
*itera %=10;
}
}
}
}

for(vector<int>::reverse_iterator iter=a.rbegin();iter !=a.rend();++iter)
{
cout<<*iter;
}
vector<int>().swap(a);
a.push_back(1);
}
return 0;
}
展开
 我来答
风若远去何人留
2014-03-27 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450143
专业C/C++软件开发

向TA提问 私信TA
展开全部
没太看你的算法
不过按照你说的 应该是迭代器的值出问题了
不同版本的STL对vector迭代器的支持不同
有些在插入新元素后 原本的所有迭代器都将出问题 必须重新赋值
你这个像是这样的原因
所以在push_back之后 把相关的迭代器都重新赋值一下试试

其实建议不要用这个东西 不觉得它有多好
直接用a[i]访问简洁多了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式