Структура данных для z-index

145
15 декабря 2016, 16:04

Необходимо подобрать структуру данных для хранения данных z-index. Все индексы должны быть уникальными и для них должна быть определена операция сравнения. Операции со структурой: добавление индекса, который больше или меньше другого индекса, добавление индекса, большего максимального индекса, удаление индекса.

Answer 1

Вам нужен лишь список z-индексов (тогда базируйтесь на std::set), или z-index для группы объектов (тогда например std::map<double, VisualObject*>)?

Смотрите. Если у вас есть std::set<double>, то все операции выполняются просто.

  1. Уникальность — свойство std::set.
  2. Сравнимость: элементы типа double сравниваются «из коробки».
  3. Добавление индекса после данного:
    • убеждаетесь, что элемент есть во множестве;
    • получаете следующий (upper_bound);
    • подсчитываете среднее арифметическое этих элементов и вставляете во множество
  4. добавление элемента меньше минимального: получаете минимальный (begin, т. к. множество отсортировано), вставляете среднее арифметическое минимального и DOUBLE_MIN. То же для максимального.
  5. Удаление из коробки.

Единственный «скользкий» случай — если при вычислении среднего арифметического в пункте 3 оно окажется равным одному из чисел. Такое может быть, если вы вставляете очень много элементов. В этом случае придётся перенумеровать все индексы: подсчитать количество элементов, и в i-ый по порядку элемент записать число i.

READ ALSO
Не видит идентификаторов в main из класса

Не видит идентификаторов в main из класса

Вроде все правильно, почему так? Что забыл? Не видит device, driver, smgr, guienv, camera, skybox, font

191
Бинарная запись в файл

Бинарная запись в файл

Здравствуйте! Можно ли организовать бинарную запись в файл также как текстовую? Например:

243
Как создать кнопку на openGL?

Как создать кнопку на openGL?

Интересует способ создания кнопки, например, как лучше это сделатьНужно, чтоб при наведении она меняла цвет, а при нажатии происходило какое-либо...

264
Как получить символ utf8 из std::string?

Как получить символ utf8 из std::string?

Допустим есть std::stringКодировка utf8

148