c++ - 是否有基于范围的类案例控制结构

标签 c++ events switch-statement range control-structure

假设在运行时我建立了一些具有发生时间的事件。现在我在系统中有某些实体,我需要确定哪些实体受到了这些事件的影响。

举个例子,我有:

  • 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/

相关文章:

c++ - 从 C++ STL 关联容器连接键/值

c++ - Qt 的 CUDA 包装器

android - 如何从以前的 Activity 中获取额外信息以设置不同的按钮 Intent ?

PHP exit() 而不是在 switch 内中断

java - OOP 中的字符串 Switch 实现替代方案

c++ - 在 C++ 中对二维数组使用插入排序函数?

c++ - Code::Blocks、MinGW、libsdl 和 GNU C++ 编译器:对 `WinMain@16 的 undefined reference

c++ - 没有互斥锁的事件通知

javascript - Turbolinks 回调完全加载的页面

javascript - 如何仅在单击父级时发生事件,但在子级时不发生事件(向下两级)