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

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

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

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

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

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

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

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

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


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