Вот еще один ответ, который, кажется, еще никто не придумал. for
Циклы следует использовать, когда вам нужно перебрать последовательность . Использование !=
является наиболее кратким методом определения условия завершения цикла. Однако использование менее строгого оператора является очень распространенной идиомой защитного программирования. Для целых чисел это не имеет значения - это просто личный выбор без более конкретного примера. Цикл по коллекциям с итераторами, которые вы хотите использовать !=
по причинам, указанным другими. Если вы считаете последовательности float
или double
, то вы хотите избежать !=
любой ценой.
Я хотел бы отметить, что for
он используется, когда вам нужно перебрать последовательность. Сгенерированная последовательность имеет начальную точку, интервал и условие завершения. Они кратко указаны в for
заявлении. Если вы обнаружите, что либо (1) не включает шаговую часть for
или (2), указав что-то вроде true
условия охраны, то вам не следует использовать for
цикл!
while
Цикл используются для продолжения обработки в то время как состояние конкретного удовлетворяются. Если вы не обрабатываете последовательность, то, скорее всего, вам нужен while
цикл. Аргументы охранного условия здесь аналогичны, но решение между a while
и for
циклом должно быть очень осознанным. while
Цикл недооцениваемый в кругах C ++ ИМА.
Если вы обрабатываете коллекцию элементов (очень распространенное for
использование -loop), то вам действительно следует использовать более специализированный метод. К сожалению, std::for_each
это довольно болезненно в C ++ по ряду причин. Во многих случаях отделение тела for
петли в отдельно стоящей функции (хотя и несколько болезненно) приводит к гораздо более чистому решению. При работе с коллекциями, рассмотрим std::for_each
, std::transform
или std::accumulate
. Реализация многих алгоритмов становится лаконичной и кристально ясной, когда выражается таким образом. Не говоря уже о том, что выделение тела цикла в отдельную функцию / метод заставляет вас сосредоточиться на алгоритме, его входных требованиях и результатах.
Если вы используете Java, Python, Ruby или даже C ++ 0x , вы должны использовать правильный цикл foreach для коллекции . По мере того как компиляторы C ++ реализуют эту функцию, ряд for
циклов исчезнет, как и обсуждения этого типа.
int i = 10; while(i --> 0) { /* stuff */ }