gpt4 book ai didi

c++ - 状态机 : Use transition matrix instead of nested switch cases C++

转载 作者:太空狗 更新时间:2023-10-29 20:29:02 25 4
gpt4 key购买 nike

我的状态机有问题。我使用一个根据输入参数 oldState 和两个输入参数返回新状态的函数。

在这个函数中我有很多嵌套的 switch cases。我宁愿使用 2x2 转换矩阵,但不知道如何使用它。我确实使用状态和输入从状态图中制作了一个转换表。

但是我如何准确地使用 2 dim。数组 transition_table[3][4]?

最佳答案

你说你目前有这样的东西:

StateType transition (StateType old, InputType one, InputType two) {
//... nested switch statements
return new_state;
}

所以,看来您需要的是一个 3 维数组:

#define MAX_STATES 12
#define MAX_INPUT_VAL 2
StateType transitionTable[MAX_STATES][MAX_INPUT_VAL][MAX_INPUT_VAL] = {
{ { StateA, StateB },
{ StateC, StateD } },
{ { StateE, StateF },
{ StateG, StateH } },
{ { StateI, StateJ },
{ StateK, StateL } },
//...
};

然后你会像这样转换:

new_state = transitionTable[StateIndex(old)][one][two];

因此,假设 StateIndex(StateC) 返回 2,那么:

old = StateC;
new_state = transitionTable[StateIndex(old)][1][0];
assert(new_state == StateK);

将导致 new_state 持有 StateK

关于c++ - 状态机 : Use transition matrix instead of nested switch cases C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11306195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com