Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2010, 20:45   #1
T42
 
Регистрация: 01.12.2010
Сообщений: 3
Вопрос Гибрид массива и списка

Вопрос по структурам данных. Кто нибудь знает или может быть видел где нибудь структуру, позволяющую реализовать массив элементов, с возможностью быстрой вставки (добавления) и удаления элемента в любом месте массива и с возможностью быстрого доступа по индексу за время О(log2(n)), или быстрее? Естественно, структура должна быть самобалансирующейся за такое же время или быстрее.
T42 вне форума Ответить с цитированием
Старый 02.12.2010, 15:05   #2
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
может быть видел где нибудь структуру, позволяющую реализовать массив элементов, с возможностью быстрой вставки (добавления) и удаления элемента в любом месте массива
Не знаю это ли имелось в виду.
Код на PureBasic
Код:
Structure MyList
  List MyList.l()
EndStructure

Dim MyArray.MyList(10)
Создается массив структур и в каждом элементе массива будет динамически связанный список, размер которого ограничен лишь доступным объемом оперативной памяти.
*PB* вне форума Ответить с цитированием
Старый 02.12.2010, 18:07   #3
T42
 
Регистрация: 01.12.2010
Сообщений: 3
По умолчанию

Нет, имелось ввиду, структура не как тип данных, а как некоторая модель хранения и организации. В любом случае, вопрос уже решен. Решение находится в области деревьев с неявными индексами (ключами).
T42 вне форума Ответить с цитированием
Старый 05.12.2010, 03:59   #4
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

мапина? std::map<int, object>?
_Ч_ вне форума Ответить с цитированием
Старый 05.12.2010, 13:57   #5
T42
 
Регистрация: 01.12.2010
Сообщений: 3
По умолчанию

Не совсем. В std::map реализовано красно-черное дерево с фиксированными ключами. В найденном решении ключи динамические, что позволяет использовать их в качестве индексов. Если интересно, схожее решение описано в статье про неявное декартово дерево: http://e-maxx.ru/algo/treap.

Последний раз редактировалось T42; 05.12.2010 в 14:00.
T42 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличается Очередь на базе списка от Очереди на базе массива? TwiX Общие вопросы C/C++ 7 16.02.2011 12:17
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52
Удаление последнего элемента из списка и реверс этого списка. Goose Общие вопросы C/C++ 8 16.05.2010 16:12
Гибрид 16 (DLL) и 32 (EXE) Alex Cones Общие вопросы Delphi 2 21.02.2010 09:23