【发布时间】:2012-08-07 12:34:53
【问题描述】:
当程序执行这个私有方法时
map<char*, vector<MAILPACK>>::iterator mit;
vector<MAILPACK>::iterator dit;
for(mit=funcs.begin(); mit!=funcs.end(); mit++) {
TRACE tr;
tr.crc32 = crc32;
strncpy(tr.name, (*mit).first, sizeof(tr.name));
int i = 0;
for(dit=(*mit).second.begin(); dit!=(*mit).second.end(); dit++){
tr.nodes[i++] = dit->dwAddr;
}
}
我收到如下错误:Expression:map/set iterator not incrementable
这个函数遍历私有映射std::map<char*, std::vector<MAILPACK>> funcs;
我哪里错了? 谢谢
附:哦,我发现保存地址到tr.nodes时没有控制边界。 但这不是重点……
【问题讨论】:
-
你能提供函数的头文件或任何定义的函数吗
-
如果您认为您可能在
tr.nodes的末尾乱涂乱画,这是一个运行时错误,那么您可能正在覆盖mit。你检查了吗? -
你实现内部 for 循环的方式意味着你从 tr.nodes[1] 开始 for dit.begin()->dwAddr;这是故意的吗?
-
@Moritz - 不,这是一个后增量;递增并返回旧值(或者,从概念上讲,使用旧值然后递增)