我得到不同的结果,通过采用两种不同的方法相同的向量迭代。为什么?
当我用我的理解是首选方法,通过矢量迭代我回来的垃圾。如果使用不同的方法,它工作正常。为什么我会收到这取决于我选择的方法不一致的结果?
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*
(从你的宣言)引用的项目。
为了使用该对象,你需要dereferentiate该指针(**sausage
)