我试图从迭代器获取引用,但似乎不可能。所以我会问最好的。
class foo { public: void go() { } };
std::vector<foo> l;
std::vector<foo>::iterator iter = l.begin(), end = l.end();
while (iter != end)
{
//foo& f = iter;
//foo& f2 = &iter;
//foo& f3 = (foo&)iter;
f.go();
}
答案 0 :(得分:4)
你想取消引用迭代器。
foo &f = *iter;
答案 1 :(得分:3)
您还需要取消引用迭代器,因为它具有指针语义:
foo& f = *iter;