我是c ++的新手,我对vector / iterators有分配。我遇到了一个问题,可以通过在Internet上搜索来解决,但不幸的是,我所访问的论坛仅提供了该解决方案,而没有解释它为什么有效。这是我遇到的问题:
std::vector::<Student*>::iterator iter;
for (iter = v_students.begin(); iter != v_students.end(); iter++)
{
iter*->doStuff(); // Gave me a compile error
}
我花了很长时间来解决该错误,但没有成功,直到我在论坛上发现有人建议这样做:
(*iter)->doStuff;
将*放在迭代器的前面,并在其周围加上()似乎可以解决问题,但我想了解原因。谢谢!
答案 0 :(得分:0)
您有一个指向对象的指针向量。
迭代向量时,您拥有的对象是迭代器。要从该迭代器转到向量中的对象,必须取消引用((*iter)
位)。现在您有了一个指针。要从该对象变为实际对象,还需要取消引用指针。那是最后的(*iter)->
位。