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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Запустить цикл с контрольной точки http://www.cyberforum.ru/cpp/thread1551828.html
Всем доброго времени суток! Задача. Имеется просто двухмерный массив. Он проганяется в цыкле и выводится на экран значения. Допустим у нас int ; i = 100; j = 100 Прошла половина цикла(50, 50) и в файл прога записала контрольную точку, что i = 50; j = 50. Програмка закрывается и вопрос, как восстановить цикл с этой контрольной точки? Тоесть я запускаю прогу через свитч выбираю запустить...
C++ Как определить тип файла? Хочу написать программу, которая из кучи различных файлов в папке удаляет файлы определённого типа, но вот проблема возникла, не знаю как вытащить этот тип, если с txt файлами всё понятно, просто определить где последняя точка, то в других файлах нужно зайти в свойства и там посмотреть этот тип (так как в конце названия он не указан). Подскажите пожалуйста как это реализовать или дайте... http://www.cyberforum.ru/cpp/thread1551826.html
Разработать программу расчета комбинаций C++
Помогите пожалуйста. Всю суть я постарался изложить на картинке П.5.18. Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. На просторах форума нашел вот такой код для генерации комбинаций, если как-то поможет отталкиваться от него. #include <iostream> #include <clocale> using namespace std;
Работа с фреймом C++
Ребята, вообщем я создал проект, и создал два фрейма, разместил их на форме, и поставил чтобы отображалась 1 фрейм. На 1 фрейме находится кнопка, на которую я должен нажать, и должен отобразится второй фрейм... Не получается(( Я пишу вот так void __fastcall TFrame2::Button3Click(TObject *Sender) { Frame3->BringToFront(); }
C++ Как при достижении определенного размера файла закрыть его http://www.cyberforum.ru/cpp/thread1551795.html
Доброй ночи! Сново я со своими вопросами.... Есть вечный цикл. Он себе работает и заполняет файлик букафками "а". Хочу при достижении определенного размера закрыть его. Немного погуглил и узнал, как узнать размер файла. Вот кодесс. fin.seekg(0, std::ios::end); size = fin.tellg();
Assembler Перевести из с++ в asm int Sum(int x, int n, int nmin, int nmax) { int i; int s = 1; for (i = 0; i < n; i++) if (x < nmin || x >nmax) { s *= x; } return s; } Как эту функцию перевести в ассемблер? подробнее

Показать сообщение отдельно
os80
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 2
14.10.2015, 06:18     Как оптимизировать обращение к элементам вектора?
Добрый день.

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

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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru