迭代器的两个 ** 的平均值

the meaninings of two ** for an iterator

本文关键字:两个 平均值 迭代器      更新时间:2023-10-16

在下面的代码段中

vector<SceneObject *> sceneObjs;
vector<SceneObject *>::iterator iter;
iter = sceneObjs.begin();
while (iter != sceneObjs.end()){
  cout << **iter <<endl;
  iter++;
}

为什么 **iter 有两个 * ?

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

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

因为*iter返回一个SceneObject*,然后第二个*将再次取消引用该。

第一个*返回迭代器中的 vale,一个SceneObject*指针。第二个*尊重那个指针,给出一个SceneObject。我怀疑<<存在将场景对象呈现为流的重载。