【发布时间】:2011-01-03 12:25:30
【问题描述】:
我有一个名为 Action 的类,它本质上是一个包装 Move 对象的双端队列。
因为我需要向前和向后遍历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;
};
Advance函数如下:
void Action::Advance
{
if( bForward)
currentfwd++;
else
currentbck++;
}
我的问题是,我希望能够检索到当前Move 对象的迭代器,而无需查询我是前进还是后退。这意味着一个函数返回一种类型的迭代器,但我有两种类型。
我应该忘记返回一个迭代器,而是返回一个对 Move 对象的 const 引用吗?
【问题讨论】:
-
您的问题“我可以从前向迭代器中得到一个 reverse_iterator”的答案是是和here