迭代器的两个**的含义

use*_*099 4 c++ pointers iterator

在以下代码段中

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

iter = sceneObjs.begin();
while (iter != sceneObjs.end()){
  cout << **iter <<endl;
  iter++;
}
Run Code Online (Sandbox Code Playgroud)

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

Rud*_*udi 12

第一个*取消引用迭代器,给出一个SceneObject *指针.第二个*取消引用此SceneObject *指针指向SceneObject自身.


cni*_*tar 11

因为*iterSceneObject *&- 一个SceneObject指针.你需要取消引用才能实现真实SceneObject.

  • Ssh,不要告诉任何人,但`*iter`实际上是一个`SceneObject*&`,但它并没有改变其余部分. (2认同)

Pla*_*aHH 5

因为*iter返回a SceneObject*然后将被第二次取消引用*.