不一致的结果通过与矢量两种不同的方法进行迭代

问题描述 投票:-4回答:1

我得到不同的结果,通过采用两种不同的方法相同的向量迭代。为什么?

当我用我的理解是首选方法,通过矢量迭代我回来的垃圾。如果使用不同的方法,它工作正常。为什么我会收到这取决于我选择的方法不一致的结果?

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

据我知道,这两个应该做的基本上是相同的事情(虽然有可能在速度的差异?),但对我来说是第一个产生的垃圾,如散落各处无效或空指针。第二种方法给出了预期的效果。

c++
1个回答
0
投票

在你的情况*运算符返回给你的迭代器,这是一个指针NgramOutput*(从你的宣言)引用的项目。

为了使用该对象,你需要dereferentiate该指针(**sausage

© www.soinside.com 2019 - 2024. All rights reserved.