循环向vector数组中赋值,循环条件值变化并报错

beyond8820 2010-03-17 10:13:57
定义了一个vector,然后通过循环向数组中赋值

int nNum = myStruct.nsize();

for(int i;i<nNum;i++)
{
.........variable//获得变量值,
myStruct.legs.push_back(variable);
}

可是执行到push_back的时候,nNum的值就变化了,例如,原来为1,执行到这里,就变为36,不知道为什么会变化,

我加了一个变量,保存nNum值,push_back后,再将变量值赋给nNum,这样又会出问题,当nNum为2的时候,第二次执行循环体,就会报assert错误,显示_ASSERTE(_CrtIsValid HeapPointer(pUserData))错误。

盼解答 谢谢^_^
...全文
228 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyond8820 2010-03-18
  • 打赏
  • 举报
回复
呵呵 今天一直在调试,终于发现问题了,因为自己的机器不能上网,所以在这里就是写了个大概,

说明一下出错原因:

在vector数组赋值过程中没有对数组中已有元素进行操作,只是在添加新元素的时候,新元素的赋值出了错,所以引起push_back后,循环条件值变化并报错,修改赋值操作后,程序目前正常运行。

为啥赋值出错会引起这个结果,目前还不知道,大家有想法的可以继续交流

多谢大家继续关注,一周后结贴,谢谢^_^
不说害怕 2010-03-17
  • 打赏
  • 举报
回复
是不是
int nNum = myStruct.size(); // 多了个字符 n

哈哈...你这程序逻辑混乱啊..

这个数组之前咋来的?
vector默认初始化,size是0
jingzhongrong 2010-03-17
  • 打赏
  • 举报
回复
你在循环中有没有取vector中的值?怎么取的
beyond8820 2010-03-17
  • 打赏
  • 举报
回复
是写成for(int i=0;i<nNum;i++)

另外nNum 在循环体内并没有赋值
fandh 2010-03-17
  • 打赏
  • 举报
回复
for(int i;i<nNum;i++)

改成:
for(int i=0;i<nNum;i++)

另外,nNum 在循环内不要改变!
element_cn 2010-03-17
  • 打赏
  • 举报
回复
nNum 是不是在循环体内有过赋值操作
gw_net 2010-03-17
  • 打赏
  • 举报
回复
你可以把可编译的代码发给我gw_net@163.com
我帮你调试一下
Eleven 2010-03-17
  • 打赏
  • 举报
回复
int nNum = myStruct.nsize();

for(int i;i<nNum;i++)
{
.........variable// 获得变量值,
myStruct.legs.push_back(variable);
}
----------------------------------
for(int i=0; i<myStruct.nsize(); i++)
{
...
myStruct.legs.push_back(variable);
}
THis????
fandh 2010-03-17
  • 打赏
  • 举报
回复
楼主代码多贴点,这点代码,大家只能猜测!
rendao0563 2010-03-17
  • 打赏
  • 举报
回复
legs是什么?
beyond8820 2010-03-17
  • 打赏
  • 举报
回复
在循环中没有取vector中的值

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧