在C ++中迭代Enums
C ++枚举问题。
因此,我有一个文件列表,以及我需要重复执行的文件列表,并执行一些操作。 大部分的东西都是一样的,但有一些文件特定的事情需要完成。 我试着把文件ID放在一个枚举中,并迭代它。 不管怎样,fileIDs是不连续的,并跳过。
目前,我有类似的东西
for(int i = 0; i < FILE_ENUM_MAX; i++)
{
currentFile = myEnum(i);
// do stuff
}
enum myEnum {
file1 = 0x1111,
file2 = 0x8000,
file3 = 0x75,
file4 = 0x120,
FILE_ENUM_MAX = 4
}
这不起作用; 我只是通过文件0,1,2和3.我得到的想法是,我不能通过请求项目N来枚举枚举中的第N个项目。那么迭代这个枚举的最佳方法是什么? 或者我应该摆脱它? 我可能可以按照数字顺序放置这些项目,但我更喜欢解决顺序无关紧要的解决方案。
我想低技术答案可能是跳过枚举,并创建一个静态数组:
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
int FILE_ENUM[] = { 0x1111, 0x8000, 0x75, 0x120 };
for(int i = 0; i < ARRAYSIZE(FILE_ENUM); i++) {
currentFile = myEnum[i];
// do stuff
}
TJ
不幸的是,C ++没有提供像你想要的那样遍历枚举的方法。
我有两个建议:
std::vector
来包含枚举。 std::map
来包含枚举。 解决方案2提供了一个好处,其中关键是文件ID,值可以是文件的名称(或包含文件属性的对象,例如文件句柄或指针)。
链接地址: http://www.djcxy.com/p/91509.html