如何 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++);
请考虑以下代码:
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++);