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

How to return a reference, then increment iterator

本文关键字:然后 迭代器 引用 何返回 返回      更新时间:2023-10-16

请考虑以下代码:

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()做的是取消引用迭代器,返回引用,然后发布增量迭代器。

我不相信这会起作用,而且我对运算符优先级有点模糊,并且希望获得有关如何实现此目的的一些指导

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

后增量运算符的优先级高于取消引用,因此这将按预期工作。

如果你想让它更明确,你也可以说

return *(foo_iter++);