Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Организация множеств std::map / 7 сообщений из 7, страница 1 из 1
09.03.2005, 12:31
    #32951012
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация множеств std::map
Вопрос такой: имеется некоторое множество (map) в котороя я добавляю элементы <ключ,значение>. Так вот если добавляемые ключи заведомо упорядочены (например, <1,"sss">,<2,"fff">,<4,"sdfs">,...), то не превратится ли множество в список (т.е. добавление элементов будет идти по одной ветке):

<1,"sss">
\
<2,"fff">
\
<4,"sdfs">
И поиск в данном множестве из логарифмической сложности превратится в линейную ? Или все-таки множества устроены по-другому (в виде, например, сбалансированного бинарного дерева). Но тогда получается при каждом добавлении элемента необходимо перестраивать дерево?

Спасибо за внимание...
...
Рейтинг: 0 / 0
09.03.2005, 12:49
    #32951077
Интегратор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация множеств std::map
Alex_VCВопрос такой: имеется некоторое множество (map) в котороя я добавляю элементы <ключ,значение>. Так вот если добавляемые ключи заведомо упорядочены (например, <1,"sss">,<2,"fff">,<4,"sdfs">,...), то не превратится ли множество в список (т.е. добавление элементов будет идти по одной ветке):

<1,"sss">
\
<2,"fff">
\
<4,"sdfs">
И поиск в данном множестве из логарифмической сложности превратится в линейную ? Или все-таки множества устроены по-другому (в виде, например, сбалансированного бинарного дерева). Но тогда получается при каждом добавлении элемента необходимо перестраивать дерево?

Спасибо за внимание...

Да, добавление данных по порядке возрастание ключей будет приводить к баллансировке дерева после каждого добавления. С поиском будет сооотвественно всё нормально, а вот добавление элементов будет долгим.
...
Рейтинг: 0 / 0
09.03.2005, 13:02
    #32951133
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация множеств std::map
Пардон, речь идет об отображениях (день тяжелый, после праздника...)
...
Рейтинг: 0 / 0
09.03.2005, 13:23
    #32951184
Интегратор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация множеств std::map
Alex_VCПардон, речь идет об отображениях (день тяжелый, после праздника...)

Я тебя понял :) На самом деле для множеств тоже самое - это ведь считай просто набор ключей ;)
...
Рейтинг: 0 / 0
09.03.2005, 14:28
    #32951373
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация множеств std::map
Т.е., получается, быстрее будут вставляться неупорядоченные значения ключей, т.к. при упорядоченной вставке (когда вставляемый эл-т всегда больше имеющихся) дерево каждый раз будет перестраиваться?
...
Рейтинг: 0 / 0
09.03.2005, 14:57
    #32951437
Интегратор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация множеств std::map
Alex_VCТ.е., получается, быстрее будут вставляться неупорядоченные значения ключей, т.к. при упорядоченной вставке (когда вставляемый эл-т всегда больше имеющихся) дерево каждый раз будет перестраиваться?

В принципе да, хотя это не совсем полная перестройка дерева.
...
Рейтинг: 0 / 0
09.03.2005, 18:07
    #32952075
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация множеств std::map
В СУБД Oracle есть оригинальный способ решения проблемы. Там есть понятие "инверсного индекса". То есть при добавлении ключа в индекс, ключ переворачивается (пример "12345" => "54321" ). Это обеспечивает более равномерное разбрасывание ключей в дереве и как следствие - быстрая вставка.

Этот индекс используется для точечной выборки одиночных значений ключа. Поиск в диапазоне и сортировка по такому индексу - лишены смысла.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Организация множеств std::map / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]