正在阅读:经验分享:闲谈C++算法封装之穷举法经验分享:闲谈C++算法封装之穷举法

2004-03-26 10:05 出处:CSDN 作者:Kusk 责任编辑:linjixiong

    这个构造函数不指定任何初始条件,包括当前状态。可以在需要的时候使用一系列的set成员函数定义。

    接下来定义一个“全功能”的构造函数:

    WalkThrough(const State& s, StateJumper j = 0, Matcher m = 0)

    : overFlag(false), curState(s), Jumper(j), IsMatch(m) { }

    除了overFlag外,所有的属性都可以在这个构造函数中设定(当然,它允许缺省值)。由于没有进行任何穷举操作,将overFlag强制为false是合理的。

    对于拷贝构造函数,由于我们这里没有涉及内存分配,没有“深拷贝”的需求,因此不作定义,使用默认的位拷贝可以有不错的效率。类似地,析构函数也没有什么事务需要处理,不过考虑到这个WalkThrough可能用于继承,且有可能出现delete基类指针来删除派生对象的情况,便定义一个空的虚析构函数,以免引起错误:

    virtual ~WalkThrough() { }

    最后,我们来实现唯一的一个非内联函数:getNextFilter(),在给出实现之前顺便给出完整的 WalkThrough的定义:

  template <class State>

  class WalkThrough

  {

  public:

    typedef bool (*StateJumper)(State&);

    typedef bool (*Matcher)(const State&);

    WalkThrough(): overFlag(false), Jumper(0), IsMatch(0) { }

    WalkThrough(const State& s, StateJumper j = 0, Matcher m = 0)

    : overFlag(false), curState(s), Jumper(j), IsMatch(m) { }


 

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品