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

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

05.11.2017, 07:53. Показов 4451. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru