相关疑难解决方法(0)

我可以将反向迭代器转换为正向迭代器吗?

我有一个叫做的类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

c++ iterator

46
推荐指数
3
解决办法
5万
查看次数

标签 统计

c++ ×1

iterator ×1