这两个函数是我的 cpp 文件的一部分。向量类型是类类型 (WordInText)。
当我的程序进入这些循环时,它会在一个循环内退出。
我怀疑你想要:
iter != wordintext_vec.end()
而不是:
iter < wordintext_vec.end()
您以错误的方式执行循环条件。不要比较“小于”,而是“不等于”。返回的迭代器在比较时将像指针一样工作,从而导致未定义的行为(即循环可能在到达结束之前的任何时间结束)。
要解决此问题,只需与“不等于”进行比较:
for(vector<WordInText>::const_iterator iter = wordintext_vec.begin(); iter != wordintext_vec.end(); ++iter) {
// ...
}
当你第一次进入这个方法时,检查向量中是否有元素。
您应该能够执行类似(伪代码)的操作:
if (wordintext_vec.length == 0) 或 if (wordintext_vec.isnull())
{
ERROR_LOGIC("向量为空");
}