Предположим, что вы хотите создать цикл for на C++, но в дополнение к определенному условию вы также знаете, когда или цикл должен остановиться. Обратите внимание, что такое условие не обязательно должно быть жестко закодированным, и цикл не должен иметь такое определяющее значение все время. Это всего лишь пример, возможно, полезный для случайных циклов, или те, которые были определены во время выполнения. Давайте сделаем этот пример простым и сосредоточимся на решении, которое может быть применено к любой такой связанной задаче в программировании.C++ Что такое «лучший» способ остановить цикл for?
Я хотел бы сравнить эти два решения. Первый использует оператор breaks, а второй использует множественное или комбинированное условие. Какой из них является «лучшим» или «правильным» способом выполнения задачи с точки зрения эффективности или надежности. Какой из них менее подвержен ошибкам? Не стесняйтесь предлагать другое решение.
const int MAX_SIZE = 10;
int myArray[MAX_SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// two ways to stop a loop
for (int x = 0; x < MAX_SIZE; x++) {
if (myArray[x] == 7) {
break;
}
cout << myArray[x] << “ “; // fixed
}
for (int x = 0; (x < MAX_SIZE) && (myArray[x] != 7); x++) {
cout << myArray[x] << “ “;
}
Я бы выбрал вторую форму, потому что она сохраняет условия в одном месте, а фактический код цикла свободен от несвязанных частей. Я думаю, это сводится к предпочтению. – user2296177
Кажется, ваши петли имеют другое поведение. Предположим, что x равно 0, а myArray [0] равно 7. – PaulMcKenzie
Я имею в виду, что вы делаете одинаковое количество сравнений каждый раз в обоих случаях.Я думаю, что первый из них более читабельен, хотя каждый может просто замаскировать стандартный код цикла 'for' и увидеть второе условие как нечто особенное. Честно говоря, я думаю, что это просто тривиально. –