Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > В for следует ли сравнивать оператором != или <? |
Автор: zim22 7.7.2010, 16:58 | ||||
День добрый. Последнее время я пишу на C/Objective-C и уже подзабыл С++ Можете мне сказать, в чём преимущество != перед < ? Я что-то смутно помню насчёт того, что != реализован для всех типов итераторов, а < только для определённых И некоторые STL алгоритмы не работают с <, но работают с != Освежите пожалуйста мою память. Я хочу ввести такой стандарт кодирования:
Но некоторые люди настаивают на <
|
Автор: mes 7.7.2010, 17:03 | ||
![]() |
Автор: zim22 7.7.2010, 17:09 | ||
но т.к. в С/Objective-C нету итераторов, то аргумент в пользу != думаю будет звучать не очень убедительно. тем более что защитники < аргументируют это тем, что в такой ситуации
оператор < отработает корректно, а != приведёт к вечному циклу. неужели оператор != проиграл? а я так его любил ![]() |
Автор: borisbn 7.7.2010, 17:41 | ||||
для простых типов ( int и т.п. ) лучше использовать < 1. начальное значение может быть не 0, а значение переменной
будет бесконечный цикл при start > 5 2. ну и твой пример с +=2 а для итераторов можно использовать только !=, т.к. в такой конструкции
сам понимаешь, что будет |
Автор: bsa 7.7.2010, 18:06 |
Только если iterator является соответствует спецификации random_access_iterator. Если это просто итератор (list::iterator, map::iterator, set::iterator, istream_iterator), то цикл не скомпилируется. |
Автор: Kurganec 7.7.2010, 21:13 |
немного не в тему, но... почему для итерраторов в цикле предпочительно использовать преинкрементацию? В книге Макса Шлее написано, что "Это позволяет избежать при каждом витке цикла, сохранение старого значения". Или это относится только к Tulip ? Или это дело привычки? |
Автор: mes 7.7.2010, 21:33 | ||
![]() для простых типов да, по аналогии с итераторами.. и вообще по этому вопросу в поиск.. тема поднимается регулярно.. |
Автор: maxim1000 7.7.2010, 23:49 |
Если не ошибаюсь, Страуструп писал, что один из очень плохих способов вводить стандарты кодирования для C++ - просто дополнять уже имеющиеся стандарты для C. Про Objective-C знаю немного, но насколько я понимаю, отличается от C++ он очень сильно. Стоит ли при разработке стандартов для него думать о C++? |
Автор: zim22 8.7.2010, 10:10 |
для Objective-C думать не стоит о С++. но у нас смешанный код. С/С++/Objective-C/Objective-C++ |
Автор: azesmcar 8.7.2010, 10:40 |
zim22 Я не думаю, что это тема для стандарта кодирования. Все эти стандарты только мешают работать, я в стандарты вводил только правила оформления кода, остальное проверялось на этапе code review. |
Автор: zim22 8.7.2010, 15:44 |
azesmcar, code review - это следующее, что я собираюсь ввести ![]() |
Автор: azesmcar 8.7.2010, 16:45 |
Это на мой взгляд намного полезнее всяких стандартов. ![]() |
Автор: bsa 12.7.2010, 12:57 |
В http://forum.vingrad.ru/forum/topic-269794/kw-faq-c++.html заглядывать пробовал? |
Автор: chaos 12.7.2010, 14:52 |
офтоп: а можно в кратце про проект: 1. для чего вам понадобился такой зоопарк языков? 2. следствеи п.1 это какое-то кросс приложение - есть какая-то общая часть кодна на С++, а все остальное .... 3. Ведь Objective-C == C(но не на оборот), тогда Вы может запутались и используете только Objective-C++ ? |
Автор: baldina 12.7.2010, 16:42 | ||
zim22, что касается преимуществ != перед < то помимо типов итераторов есть еще одно, упомянутое впервые, кажется, Дейкстрой: != более жесткое условие, и зависание (падение) программы произойдет в тех случаях, когда < пропустит ошибку. т.е. ошибка будет обнаружена раньше.
это как раз показывает, что к стандартам кодирования тема не относится. есть разные случаи ![]() |