Я использую язык C ++; Я пытаюсь понять структуры данных и компоновку, которые лучше всего могли бы l oop превышать только необходимые данные из vector<dataType>
или если другая структура данных могла бы исправить неправильный доступ по индексу, используемому только для получения обновленных компонентов. В моем подходе события прослушиваются классом действия, который сигнализирует обо всех операциях, необходимых для выполнения действия, получившего событие. Сигнал будет отправлен вектору того, какие компоненты необходимо изменить и на сколько нужно выполнить определенную операцию;
- Например,
move(Bbox &bbox, float xAmt, float yAmt)
- будет вызвано добавлением сигнала к
vector<pair<idOfComponent,dataNeeded>>
, который удерживается BboxManager
- .
idOfComponent
используется для получения индекса в vector<dataType>
, который содержит компонент; в этом примере идентификатор bbox для получения индекса данных для операции перемещения.
Мои подходы:
- Идентификаторы компонентов, которые будут запущены действия, производящие операции, не затронут все компоненты этого типа данных, поэтому итерация всего вектора не будет делать больше, чем необходимо
- , если к ним обращается их идентификатор, который может быть привязан к индексу в векторе, получить доступ к ним не по порядку, может быть, достаточно далеко друг от друга, чтобы использовать другую строку кэша только для этого поиска.
- Я мог бы отсортировать возрастающий порядок идентификаторов, но пробелы действительно являются проблемой.
- Перемещение данных в передняя и единственная итерация, которая по-прежнему будет обращаться к данным для последующего копирования или перемещения на передний план, что будет избыточно, поскольку я уже получил данные.
Вопрос: является ли схема этой (как бы слот-карта превращение идентификаторов в индексы в вектор), что мешает мне эффективно использовать кеш в моем сценарии или есть лучший подход к Нужна только работа с данными без пробелов в памяти?