У меня есть проблема, пытаясь сделать для каждого цикла в C ++. Я не уверен, что это возможно в C ++, если я до сих пор не знаю, как это сделать.
У меня есть одна простая проблема, написанная на паскале, которая делает нахождение дня в году, когда это пятница 13 или суббота 25, без учета какого дня.
В паскале у меня есть код, подобный этому:
{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 ++?
Я знаю, что это может показаться вопросом для начинающих, но я попробовал несколько разных способов сделать это не работает. Не компилируется.
Нет, вы не можете сделать это напрямую в C ++. Однако есть несколько обходных путей.
int
s, и увеличивайте переменную цикла на 1 каждый раз, пока она не станет равной последней enum
ценность. Это описано в этот ТАК вопрос.Если значения не увеличивается на 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
}
Вы можете сделать следующее в c ++ при условии, что значения перечисления являются последовательными
enum Months
{
January,
February,
// etc...
December,
Last
};
for (int month = January; month != Last; ++month)
{
// do stuff
}