使用两种不同的方法遍历 Vector 的结果不一致



我使用两种不同的方法遍历同一个向量得到不同的结果。 为什么?

当我使用我理解的首选方法遍历向量时,我会得到垃圾。 如果使用其他方法,则工作正常。 为什么根据我选择的方法,我得到的结果不一致?

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]);
}

据我所知,两者都应该做基本相同的事情(尽管速度可能存在差异?(,但对我来说,第一个会产生垃圾,例如散布在整个中的无效或空指针。 第二种方法给出了预期的结果。

在您的情况下*运算符会向您返回迭代器引用的项,该项是指针NgramOutput*(来自您的声明(。

为了使用该对象,您需要取消引用该指针(**sausage (

最新更新