我在尝试为C ++中的每个循环制作时遇到问题。我不确定这是否可以在C ++中实现,如果我仍然不知道这样做。
我有一个简单的问题用帕斯卡写的,它确实找到了当天的星期五13或星期六25没有遇到的那一天。
在pascal我有这样的代码:
{First I declare types}
type
months = (January, February, March, April, May, June, July, August, September, October, November, December);
...
{Then I declare variable for months}
var
m: mesec;
...
{Then I can declare for loop that will loop over months}
for m:= januar to december do
...
在python中也可以为枚举的每个循环执行类似的方法。 我的问题是:
对于C ++中的枚举,是否有任何方法可以执行或甚至循环?
我知道这可能看起来像是一个乞讨者问题,但我尝试了几种不同的方法来做它不起作用。不编译。
答案 0 :(得分:5)
如果枚举值是连续的
,您可以在c ++中执行以下操作enum Months
{
January,
February,
// etc...
December,
Last
};
for (int month = January; month != Last; ++month)
{
// do stuff
}
答案 1 :(得分:2)
不,你不能直接在C ++中这样做。但是,有一些解决方法。
int
s,并将循环变量每次增加1,直到它等于最后enum
的值。这在this SO question。如果值不增加1(例如enum E {FIRST = 5, SECOND = 10}
,则会变得更加棘手。您可以创建一个包含所有可能值的数组并使用它(这是一个糟糕的解决方案,但它的工作原理):
enum E
{
FIVE = 5,
TEN = 10,
THREE = 3
};
E arr[3] = {FIVE,TEN,THREE};
E iterator;
for( int i = 0; i < 3; i++ )
{
iterator = arr[i];
//do something with it
}