我有一个叫做的类Action,它实际上是一个围绕Move对象deque的包装器.
因为我需要遍历Moves前向和后向的双端队列,所以我有一个前向迭代器和一个reverse_iterator作为类的成员变量.这样做的原因是因为当我前往或后退时,我需要知道何时离开了双端队的"终点".
这个类看起来像这样:
class Action
{
public:
SetMoves(std::deque<Move> & dmoves) { _moves = dmoves; }
void Advance();
bool Finished()
{
if( bForward )
return (currentfwd==_moves.end());
else
return (currentbck==_moves.rend());
}
private:
std::deque<Move> _moves;
std::deque<Move>::const_iterator currentfwd;
std::deque<Move>::const_reverse_iterator currentbck;
bool bForward;
};
Run Code Online (Sandbox Code Playgroud)
该Advance功能如下:
void Action::Advance
{
if( bForward)
currentfwd++;
else
currentbck++;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我希望能够检索当前Move对象的迭代器,而无需查询我是向前还是向后.这意味着一个函数返回一种类型的迭代器,但我有两种类型.
我应该忘记返回一个迭代器,并返回一个Move对象的const引用 吗?
最好的祝愿,
BeeBand