Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239

Организация хранения объектов по координатам

05.11.2017, 07:53. Показов 4559. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Передо мной стала задача, хочу спросить совета.
Итак, имеем объекты, главной характеристикой которых являются координаты (x,y). Координаты могут быть отрицательными и положительными. Мы знаем общее количество объектов которые храним, например: 21 по x и 21 по y. Нужно хранить эти объекты в каком-то массиве, но так, чтоб можно было получить быстрый доступ к объекту по координате. Ещё есть одно важное условие, объекты будут выгружаться и подгружаться новые, с новыми координатами, но не из середины координат, а крайние.
Конечно есть вариант перебирать объекты в цикле и сравнивать их координаты с нужными, но я хочу этого избежать.

Сейчас у меня организованно так: допустим, есть объекты с координатами от -10 до 10, так вот, создан двумерный массив, в котором нулевой индекс по одной оси, это -10, а последний индекс, это 10. Для примера беру одну ось.
C++
1
2
3
4
5
arr[0] = -10;
...
arr[10] = 0;
...
arr[20] = 10;
Зная количество объектов, не сложно вычислить индекс где этот объект лежит. Минус такого хранение в том, что при загрузке новых объектов, например, объекты стали от -9 до 11, приходится перемещать объекты в массиве, и второй минус, выгрузка только целой осью, а не отдельным объектом.
Собственно вопрос: как организовать хранение с учетом требований? ещё раз:
1. Доступ не в цикле, а напрямую, зная только координаты
2. Возможность выгружать и загружать новые объекты

Надеюсь объяснил понятно, если возникли вопросы, с радостью отвечу.

Добавлено через 5 минут
Ещё хочу добавить, что контейнеры типа: map set дико тормозят программу при работе, поэтому от них я отказался.

Добавлено через 20 часов 3 минуты
В общем, единственное что пока придумал, правда ещё не проверил как быстро работает, это:
C++
1
2
3
4
5
6
7
class Object{
//...
}
maxX = 10;   // от -10 до 10 по X
maxY = 10;   // от -10 до 10 по Y
Object[(maxX * 2 + 1)  * (MaxY * 2 + 1)] containerObjects;   // Объекты
std::map<int, std::map<int, Object *>> pointObjects;   // Указатели
Будет создаваться два массива, один будет хранить объекты, второй (map) хранить указатели на них
C++
1
2
3
4
5
6
7
int n(0);
for (int x(-10); x <= maxX * 2; x++){
   for (int y(-10); y <= maxY * 2; y++){
      pointObjects[x][y] = &containerObjects[n];
      n++;
   }
}
А сам объект будет тогда хранить индекс массива для дальнейшего удаления. Пример не рабочий, просто для наглядности, писал прям здесь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2017, 07:53
Ответы с готовыми решениями:

Организация хранения сообщений в БД
Как правильно и быстро хранить и получать сообщения? Например есть диалог (вроде того что ВК) Как хранить такие сообщения? ...

Организация хранения файлов
Подскажите пожалуйста как лучше в Windows 7 организовать хранение файлов без разбивки диска. У меня две учетных записи и файлы хранятся в...

Организация хранения данных
Было столкнулся с несчастьем, когда мамка утянула за собой винт с 300 Гб любовно собираемой информации. На ммену ей пришла другая бу, на...

20
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.11.2017, 23:20
Студворк — интернет-сервис помощи студентам
Судить о быстродействии по debug бессмысленно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2017, 23:20

Организация хранения путей в ListView
Необходимо получить имена текстовых файлов и их содержимое поочередно. Скажем так, имеется каталог с текстовыми файлами внутри, нужно...

Организация хранения и создания паролей
Здравствуйте! Решил об этом спросить в этом разделе форума, т.к. больше не знаю где. Так вот меня заинтересовала организация хранения и...

Организация хранения текста в памяти
Делаю текстовый редактор - к сожалению по разным причинам мне не подходят существующие решения в виде RichMemo или SynEdit Редактор...

Организация учета по местам хранения
Есть склад1 с картриджами. В нем коробки: &quot;Наши заправленные&quot; &quot;Наши пустые&quot; &quot;Филиалы заправленные&quot; &quot;Филиалы...

Организация хранения множеств с помощью массивов.
Выполнение задания предполагает организацию хранения множеств с помощью массивов. Последовательная обработка всех элементов массива...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru