Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Как оптимизировать обращение к элементам вектора? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что можно сделать с проектом ? http://www.cyberforum.ru/cpp/thread1550055.html
В данный момент поддерживаю одну старую игру (игра полностью некоммерческая, код открыт, онлайн примерно 50-60 человек, написан на си/c++, поддерживать есть необходимость только серверную часть). Что...
C++ Программирование под Android Можно ли писать на C\C++ под андроид? Гуглил, но нашел только NDK, а это не совсем то, что хотелось бы. http://www.cyberforum.ru/cpp/thread1549319.html
Как сделать сохранение в игре? C++
Недавно я решился попробовать создать RPG игру на C++ поскольку с языком у меня особых проблем нету, и мне захотелось поэксперементировать со своими навыками. И, собственно, когда я создавал...
C++ Коммерческо-тайное ПО: защитить exe-файл
Разрабатываю для фирмы ПО. Недаано начальство сказало, дескать надо от конкурентов защититься, что бы они не смогли, имея exe-шник, понять принцыпы работы ПО. Для меня тема совершенно новая -...
C++ Открыть исходный код exe http://www.cyberforum.ru/cpp/thread1545251.html
Доброго времени суток. Нужно срочно открыть исходный кoд exe'шника с пом. C++. Имею 2 среды разработки: DevC++ и Qt Creator. Желательно это сделать на Qt Creator. Может в C++ какие-то функции для...
C++ Можно ли полагаться на поведение this->shared_from_this() добрый вечер. #include <iostream> #include <memory> struct sample: std::enable_shared_from_this<sample> { подробнее

Показать сообщение отдельно
os80
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 2

Как оптимизировать обращение к элементам вектора? - C++

14.10.2015, 06:18. Просмотров 512. Ответов 4
Метки (Все метки)

Добрый день.

Подскажите, пожалуйста, где я не прав. Есть класс, в нем координаты и другие параметры, описывающие существ (овцы и волки). Эти существа содержатся в векторе и в цикле проверяются между собой на разные условия: близость волков, поиск травы на карте, столкновение двух овец для размножения и т.д.
Вот пример кода из цикла проверок. В данном случае, овца убегает от волка, если видит его.

C
1
2
3
4
5
if((*it)->name=="Sheep" && (*it2)->name=="Wolf")
if(abs((*it)->x-(*it2)->x)<(*it)->SeeSheepRadius && abs((*it)->y-(*it2)->y)<(*it)->SeeSheepRadius){
   if((*it)->x<(*it2)->x) (*it)->dx = -0.01; else (*it)->dx = 0.01;
   if((*it)->y<(*it2)->y) (*it)->dy = -0.01; else (*it)->dy = 0.01;
}
Проблема в том, что если условий таких несколько и существ больше нескольких сотен, то всё это очень тормозит.
Подозреваю, что много времени занимает именно обращение к переменным класса в элементе вектора: (*it)->x.
Что с этим можно сделать? Читал про списки и вектора, для этих задач лучше подходит вектор.

Весь код на гитхабе: github.com/os80/Glass-Grass
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru