对基于循环范围的误解

Misunderstanding of range-based for loop?

本文关键字:范围 误解 循环 于循环      更新时间:2023-10-16

当我试图编译以下代码时,会发生编译器错误:

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){

}

但没有雪茄。。。提前感谢,

基于范围的for循环需要一个集合,比如数组或向量。枚举类不是集合。

但是,它是C++,所以有一个变通方法。请参阅:是否允许使用枚举类进行基于范围的for?

基于范围的for循环是一种在元素列表上轻松迭代的机制。"元素列表"可以是纯数组,也可以是实现返回迭代器类型的beginend方法的类的实例。

示例:

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