【发布时间】: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*->做什么?一元运算符如“解引用运算符”(*) 必须始终位于其操作数之前。 -
获取迭代器指定的值的方式是解引用,所以
*iter