Необходимо подобрать структуру данных для хранения данных z-index. Все индексы должны быть уникальными и для них должна быть определена операция сравнения. Операции со структурой: добавление индекса, который больше или меньше другого индекса, добавление индекса, большего максимального индекса, удаление индекса.
Вам нужен лишь список z-индексов (тогда базируйтесь на std::set), или z-index для группы объектов (тогда например std::map<double, VisualObject*>)?
Смотрите. Если у вас есть std::set<double>, то все операции выполняются просто.
std::set.double сравниваются «из коробки».upper_bound);begin, т. к. множество отсортировано), вставляете среднее арифметическое минимального и DOUBLE_MIN. То же для максимального.Единственный «скользкий» случай — если при вычислении среднего арифметического в пункте 3 оно окажется равным одному из чисел. Такое может быть, если вы вставляете очень много элементов. В этом случае придётся перенумеровать все индексы: подсчитать количество элементов, и в i-ый по порядку элемент записать число i.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости