| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > iterator |
| Автор: htzg 1.5.2010, 22:59 | ||||
и
Что быстрей работает? Или одинаково ? |
| Автор: toxx 1.5.2010, 23:35 | ||
Знаю, что по возможности нужно использовать префиксный итератор, т.к. префиксный итератор в отличии от постфиксного не возвращает старое значение, которое храниться во временном объекте.
|
| Автор: toxx 1.5.2010, 23:45 | ||
В разделе книги где я читал про итераторы(после темы про деревья в стиле С++), написано именно так=) блин врут и врут нагло... Просто я почему запомнил это, т.к. дело касалось скорости, а тут увидел тему и сразу вспомнил =) |
| Автор: mes 2.5.2010, 01:01 |
скорей всего не врут..просто Вы не правильно расставили акценты.. в том что один возвращает старое значение, а другой измененное - это (смысловое) различие, а вот для того, чтоб вернуть старое, после изменения, нужно предворительно создать его копию - это издержки одного, которые и выливаются в увеличение времени выполнения, но только для типов, для которых копирование относительно дорогая операция.. |
| Автор: htzg 2.5.2010, 08:35 | ||||
а если так
и
Что быстрей? Или компилятор может оптимизировать первый код? Как узнать что компилятор оптимизирует? |
| Автор: mes 2.5.2010, 10:17 | ||
все что может, и с каждой новой версией компилятора все больше и больше, и поэтому если это не критический к скорости участок, то нужно писать, думая не о мелкой оптимизации, а о качестве алгоритме решения задачи - потому как во втором вопросе компилятор помочь не может и все зависит от программиста. |
| Автор: htzg 4.5.2010, 21:12 |
| Понятно! Спасибо всем! |
| Автор: bsa 7.5.2010, 00:09 |
| htzg, на будущее - пользуйся стандартными алгоритмами, например, std::for_each. В случае его использования у тебя не будет болеть голова о ++i/i++ и создании итератора, указывающего на конец контейнера... Хотя, я считаю, что лучше всегда использовать ++i и создавать итератор. |
| Автор: dengalf 12.5.2010, 08:17 |
| Может не совсем в тему, но правда ли, что оператор i-- работает быстрее i++? и что самый быстрый в большинстве случаев цикл - это while с --i. если да - то в чем логика? |
| Автор: Леопольд 12.5.2010, 09:24 | ||
Всё таки, в общем случае, программы надо писать для человека, а не для машины. Корректность важнее быстродействия. |
| Автор: dengalf 12.5.2010, 09:39 | ||
Как раз тот случай |
| Автор: mes 12.5.2010, 10:00 | ||
мм.. скажем так, этих мелочей при включенной оптимизации в результативном коде не остается |
| Автор: GoldFinch 12.5.2010, 10:01 |
| dengalf, --i лучше тем что не надо сравнивать с size, сравнение с нулем произойдет само однако я бы не стал делать такую оптимизацию, она почти ничего не даст,к тому же компилятор и сам может заменить порядок обхода Добавлено через 1 минуту и 32 секунды в любом случае надо знать асм и понимать что именно сгенерит компилятор для того или иного кода (компилировать в уме |
| Автор: dengalf 12.5.2010, 10:41 |
| Спасибо. |
| Автор: htzg 12.5.2010, 18:40 | ||
это идея!!! |