美文网首页
C++11状态机模式展示

C++11状态机模式展示

作者: FredricZhu | 来源:发表于2021-07-18 06:29 被阅读0次

题目,


image.png

这个题目其实就是各种状态之间的转换,写的更好的话,可能还需要一个状态机变量。
这里直接就是在一个函数里面进行转换了。
代码比较简单,
代码如下,

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;

class CombinationLock
{
    size_t current_idx {0};
    vector<int> combination;
public:
    string status;

    CombinationLock(const vector<int> &combination) : combination(combination), status{"LOCKED"} {
      
    }

    void enter_digit(int digit)
    {
       if(status.compare("LOCKED") == 0) {
          status = "";
      }
      
      if(current_idx >= combination.size()) {
          status = "ERROR";
          return;
      }
      
      if(status == "ERROR") {
          return;
      }
      
      if(combination[current_idx] == digit) {
        ostringstream oss;  
        oss << digit;
        status += oss.str();
      }else {
          status = "ERROR";
          return;
      }

      if(current_idx == combination.size()-1) {
          status = "OPEN";
      }
      ++current_idx;
      
    }
};

相关文章

  • C++11状态机模式展示

    题目, 这个题目其实就是各种状态之间的转换,写的更好的话,可能还需要一个状态机变量。这里直接就是在一个函数里面进行...

  • C++11命令模式展示

    这个代码太简单了。命令模式一般会有一个std::vector对象来做命令的执行和回放,这里没体现出来。感觉课程的作...

  • C++11策略模式展示

    题目, 这个题目其实是在有理数范围内和无理数范围内分别计算求根公式的策略。对于有理数,不支持复数,那么如果求根公式...

  • 状态模式

    一. 什么是状态模式 状态模式是状态机的一种实现方式. 状态机又叫有限状态机(FSM) 状态模式不常用, 有点像组...

  • C++11解释器模式展示

    题目, 本例实现一个简单的+,-法解释器,不考虑括号的情况,也就是不考虑优先级。需要支持嵌入变量的情况。如果变量是...

  • C++11模板方法模式展示

    题目, 这个题目我做的答案判定是错误的,但是思路是一致的,就是说在父类中定义抽象行为,在子类中实现行为方法。这个作...

  • C++11迭代器模式展示

    题目, 这个代码跟迭代器没什么关系,就是先序遍历树,然后把遍历结果放到std::vector里面。不过有了这个st...

  • C++11 装饰器模式展示

    题目, 这个题目开始想复杂了,折腾了两三个小时才折腾出来,不过这种设计本身也很蛋疼,1、已经有red或者blue的...

  • C++11享元模式展示

    题干,看题干好像只要能支持指定位置的单词大写就行。但其实出题者的单元测试不只这些,大写之后也有可能还原到小写。这样...

  • C++11责任链模式展示

    题目 题目不是很难,但是解起来的时候要注意一点。就是Creature指针是被放在了vector里面固化了的,就是缓...

网友评论

      本文标题:C++11状态机模式展示

      本文链接:https://www.haomeiwen.com/subject/smdbpltx.html