-2

for 循环

这两个函数是我的 cpp 文件的一部分。向量类型是类类型 (WordInText)。

当我的程序进入这些循环时,它会在一个循环内退出。

4

3 回答 3

7

我怀疑你想要:

iter != wordintext_vec.end()

而不是:

iter < wordintext_vec.end()

于 2012-05-09T21:24:03.217 回答
2

您以错误的方式执行循环条件。不要比较“小于”,而是“不等于”。返回的迭代器在比较时将像指针一样工作,从而导致未定义的行为(即循环可能在到达结束之前的任何时间结束)。

要解决此问题,只需与“不等于”进行比较:

for(vector<WordInText>::const_iterator iter = wordintext_vec.begin(); iter != wordintext_vec.end(); ++iter) {
    // ...
}
于 2012-05-09T21:25:07.120 回答
0

当你第一次进入这个方法时,检查向量中是否有元素。

您应该能够执行类似(伪代码)的操作:

if (wordintext_vec.length == 0) 或 if (wordintext_vec.isnull())

{

ERROR_LOGIC("向量为空");

}

于 2012-05-09T21:30:51.860 回答