迭代器的两个**的含义

时间:2011-10-12 14:21:05

标签: c++ pointers iterator

在以下代码段

vector<SceneObject *> sceneObjs;
vector<SceneObject *>::iterator iter;

iter = sceneObjs.begin();
while (iter != sceneObjs.end()){
  cout << **iter <<endl;
  iter++;
}

为什么**它有两个* s?

4 个答案:

答案 0 :(得分:12)

第一个*取消引用迭代器,给出一个SceneObject *指针。第二个*取消引用SceneObject *指向SceneObject本身的指针。

答案 1 :(得分:11)

因为*iterSceneObject *& - 一个SceneObject指针。您需要取消引用才能获得真实的SceneObject

答案 2 :(得分:5)

因为*iter会返回SceneObject*,然后会被第二个*取消引用。

答案 3 :(得分:3)

第一个*返回迭代器中的值,SceneObject*指针。指针的第二个* deferences,给出SceneObject。我怀疑<<有一个重载,它将SceneObject`呈现为一个流。