范围for循环的误解?

5
当我尝试编译以下代码时,发生了编译器错误:
for(binary_instructions_t &inst: BinaryInstructions){


}

BinaryInstructions是一个枚举类:

typedef unsigned int binary_instructions_t;

enum class BinaryInstructions : binary_instructions_t
{
    END_OF_LAST_INSTR = 0x0,

    RESET,
    SETSTEP,
    START,
    STOP,

    ADD,
    REMOVE,
};

我能否使用枚举类中的项目来执行“基于范围的for循环”?或者我是否在误解,因为基于范围的for循环是用于搜索数组内容而不是像枚举类这样的东西?

我还尝试过:创建一个实例并在该实例中搜索:

BinaryInstructions bsInstance;
for(binary_instructions_t &inst : bsInstance){


}

但是还差一点点……提前感谢您。
2个回答

8

太棒了!我喜欢那个实现。比我原本想用的强制转换为int的解决方案更加简洁。 - David Hope

0

基于范围的for循环是一种简单迭代列表元素的机制。'元素列表'可以是普通数组,也可以是实现了beginend方法返回一个迭代器类型的类的实例。

例如:

int arr[] = { 1, 2, 3, 4 };
for (int cur : arr)
   std::cout << cur << std::endl;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接