如何 return 引用,然后递增迭代器

How to return a reference, then increment iterator

请考虑以下代码:

struct Foo
{
    //some useful unique data
};

std::vector<Foo> foos;
std::vector<Foo>::iterator foo_iter;
//populate with a load of Foo objects.

Foo& getNextFoo()
{
    return *foo_iter++;
}

我希望 getNextFoo() 做的是,如您所料,解引用迭代器,return 引用,然后 post 递增迭代器。

我不相信这会奏效,我对运算符的优先级有点模糊,希望得到一些关于如何实现这一点的指导

Foo& getNextFoo()
{
    return *foo_iter++;
}

post-增量运算符 has higher precedence 比解引用更有效,因此这将按您的预期工作。

如果你想更明确一点,你也可以说

return *(foo_iter++);