假设在运行时我建立了一些具有发生时间的事件。现在我在系统中有某些实体,我需要确定哪些实体受到了这些事件的影响。
举个例子,我有:
- Entity1 在时间 1 初始化
- EventRed 发生在时间 3
- Entity2 在时间 8 初始化
- EventBlue 发生在时间 9
- EventYellow 发生在时间 11
- Entity3 在时间 13 初始化
这应该导致:
- Entity1 是白色的
- Entity2 是绿色的
- Entity3 是黑色的
我想要一个类似于 case
的控制结构来执行此操作,它支持失败,并且谁的 case 被评估为“大于或等于该值”。我想要这样的语法:
for(auto& i : Entity) {
?switch(i.GetInitializedTime()) {
?case(Red.GetOccuranceTime()):
i.AddRed();
?case(Blue.GetOccranceTime()):
i.AddBlue();
?case(Yellow.GetOccuranceTime()):
i.AddYellow();
}
}
是否有这样的控制结构,或者我是否必须兼顾所有 if 语句?
最佳答案
没有什么能完全满足您的需求。你必须为此编写自己的类(class)。实际上,它看起来像 <time, function>
的排序 vector 。对。
即使 switch 语句的 GCC“范围扩展”也采用固定范围。
关于c++ - 是否有基于范围的类案例控制结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33040490/