我使用两种不同的方法遍历同一向量获得了不同的结果。为什么?
当我使用我认为是首选的方法遍历向量时,我又回到了垃圾状态。如果使用其他方法,则效果很好。为什么我选择的方法会导致结果不一致?
for(vector <NgramOutput*>::iterator sausage = (*sausageCarton)->getSausageBox().begin(); sausage != (*sausageCarton)->getSausageBox().end(); ++sausage){
dosomething(*sausage);
}
for (int i=0; i < sausage.size(); i++) {
dosomething(sausage[i]);
}
据我所知,两者都应该做基本相同的事情(尽管速度可能会有所不同?),但对我来说,第一个会产生垃圾,例如散落在各处的无效或空指针。第二种方法给出了预期的结果。
答案 0 :(得分:0)
在您的情况下,*
运算符会向您返回迭代器引用的项目,该项目是指针NgramOutput*
(来自您的声明)。
要使用该对象,您需要取消引用该指针(**sausage
)