Как я могу отслеживать порядок выполнения операторов case switch
?
Например:
while (some_boundary) {
switch (value) {
case a:
do something;
move to next value;
break;
case b:
do something;
move to next value;
break;
case c:
do something;
move to next value;
break;
}
}
Я хочу знать, был ли switch
выполнен abc
или bac
или cab
и т.д.
Есть идеи? Или реализация через if/else
имеет больше смысла?
Вы можете сохранить вектор на каждой итерации со значением соответствующей итерации:
std::vector<int> sequence;
while (some_boundary) {
int temp = computeValue(); // Or however you get your value.
sequence.push_back(temp);
switch (temp) {
case a:
//do something;
break;
case b:
//do something;
break;
case c:
//do something;
break;
}
}
Изменение: предполагается, что значение находится где-то между входом и переключателем, поэтому вы можете сохранить его заранее. Другим вариантом является включение команды push_back в каждом случае, но более "грязный". Предварительное выделение вектора также может сэкономить некоторое время вычисления.
Edit2: код, измененный в соответствии с предложениями, чтобы обеспечить вычисление нового значения.
switch
рассчитанное значение. Просто присвойте результат вычисления временной переменной, сохраните переменную в векторе, а затем switch
переменную.
Если вы просто хотите знать (и не сохранять результаты), вы можете просто вывести значение на каждой итерации. Пытаться
cout << value << endl;
как первая строка внутри цикла while.