【问题标题】:Question about accessing object method with vector iterator关于使用向量迭代器访问对象方法的问题
【发布时间】:2019-04-22 16:05:19
【问题描述】:

我是 C++ 新手,我有一个关于向量/迭代器的分配。我遇到了一个问题,我可以通过在互联网上搜索来解决,但不幸的是,我访问的论坛只提供了解决方案,并没有解释它为什么起作用。这是我遇到的问题:

std::vector::<Student*>::iterator iter;
for (iter = v_students.begin(); iter != v_students.end(); iter++)
{
     iter*->doStuff(); // Gave me a compile error
}

我尝试了很长时间来解决这个错误但没有成功,直到我在论坛上发现有人建议这样做:

(*iter)->doStuff;

将 * 放在迭代器前面并将 () 放在它周围似乎可以解决问题,但我想了解原因。谢谢!

【问题讨论】:

  • 您希望iter*-&gt; 做什么?一元运算符如“解引用运算符”(*) 必须始终位于其操作数之前。
  • 获取迭代器指定的值的方式是解引用,所以*iter

标签: c++ vector iterator


【解决方案1】:

你有一个指向对象的指针向量。

当您迭代向量时,您“手中”的对象是一个迭代器。要从该迭代器转到向量中的对象,您必须取消引用它((*iter) 位)。现在你有一个指针。要从那个到实际对象,您还需要取消引用指针。这是最后一个(*iter)-&gt; 位。

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多