Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 04:58   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Если заранее сохранить размер вектора/контейнера, будет ли перебор быстрее?

Код:
for (int i=0; i<vec.size(); i++)
Vs
Код:
for (int i=0, ss=vec.size(); i<ss; i++)
TwiX вне форума Ответить с цитированием
Старый 30.10.2011, 09:07   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Зависит от реализации библиотеки, например, в VC++2010 размер вектора - это разница между указателями на конец и начало вектора, возможно быстрее будет ++i префиксная операция, хотя тоже зависит от компилятора и его оптимизации
И вообще для перебора лучше использовать итераторы :
Код:
for (auto i=vec.begin(); i!=vec.end(); ++i)
An1ka вне форума Ответить с цитированием
Старый 30.10.2011, 10:26   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

итераторы лучше,
а по теме:
Код:
for (int i=0; i<vec.size(); i++)
//инициализация
00411927  mov         dword ptr [i],0  
0041192E  jmp         main+0A9h (411939h) 
//итерация 
00411930  mov         eax,dword ptr [i]  
00411933  add         eax,1  
00411936  mov         dword ptr [i],eax 
//условие 
00411939  lea         ecx,[ebp-24h]  
0041193C  call        std::vector<int,std::allocator<int> >::size (411294h)  
00411941  cmp         dword ptr [i],eax  
00411944  jae         main+0EAh (41197Ah)
но это в отладке.
а в релизе все иначе, вычисляется через разницу указателей.
и количество итераций цикла определяеться сразу, потом просто прогон.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если будет время!!! Ri}|{a9 Фриланс 7 06.09.2010 11:49
Что будет работать быстрее?? Pahan Общие вопросы C/C++ 9 20.12.2009 21:24
Учет оплаты. Какая формула будет если..? Anton_audit Microsoft Office Excel 5 12.08.2009 17:40
Что мне будет за то, если я взломаю сайт? Лукманов Александр Безопасность, Шифрование 28 08.03.2009 21:32
Как сохранить файл заранее указывая папку? highklass Общие вопросы Delphi 2 09.06.2008 10:58