hash_map<float,...> и пара <133.33,...>
От: XisRaa  
Дата: 04.10.05 17:56
Оценка:
Проблема:
hash_map<float, some_type> hm;

при добавлении 133.## <- добавленное всегда в начале списка.

Desc:

если добавляю просто числа, то с последовательностью все нормально, например

typedef pair < float, some_type > h_pair;

hms.insert( h_pair(180.33f, some_type) );
hms.insert( h_pair(220.4f, some_type) );
hms.insert( h_pair(150.7f, some_type) );
hms.insert( h_pair(100.13f, some_type) );
hms.insert( h_pair(170.11, some_type) );

дает при просмотре hm последовательность:
100.13
150.7
170.11
180.33
220.4

но если я добавляю 133.### ( ### — что угодно), то добавленное всегда находится в начале списка.
133.33
100.13
150.7
170.11
180.33
220.4

Объясните, ну что же я не понимаю?!
Re: hash_map<float,...> и пара <133.33,...>
От: ssm Россия  
Дата: 04.10.05 18:29
Оценка: 3 (2)
Здравствуйте, XisRaa, Вы писали:


XR>Объясните, ну что же я не понимаю?!


hash_map is useful for "dictionaries" where the order of elements is irrelevant. If it is important for the elements to be in a particular order, however, then map is more appropriate
Re[2]: hash_map<float,...> и пара <133.33,...>
От: XisRaa  
Дата: 04.10.05 20:07
Оценка:
Здравствуйте, ssm, Вы писали:

ssm>hash_map is useful for "dictionaries" where the order of elements is irrelevant. If it is important for the elements to be in a particular order, however, then map is more appropriate


Хм, вот оно как... Верно меня
"Stores and retrieves data quickly from a collection in which each element is a pair that has a sort key whose value is unique and an associated data value." ввело в заблуждение...
Спасибо!
Re: hash_map<float,...> и пара <133.33,...>
От: SkyDance Земля  
Дата: 05.10.05 11:40
Оценка:
Всегда интересовала область применения hash_map & hash_set для простых ключей с быстрой операцией сравнения (int, float и т.п.).
Posted via RSDN NNTP Server 1.9
Re[2]: hash_map<float,...> и пара <133.33,...>
От: XisRaa  
Дата: 05.10.05 14:33
Оценка:
SD>Всегда интересовала область применения hash_map & hash_set для простых ключей с быстрой операцией сравнения (int, float и т.п.).
Лично я — для поиска по некотому признаку в больших объемах изменяющейся информации за константное время.
Re[2]: hash_map<float,...> и пара <133.33,...>
От: Alex Alexandrov США  
Дата: 05.10.05 17:53
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Всегда интересовала область применения hash_map & hash_set для простых ключей с быстрой операцией сравнения (int, float и т.п.).


Навскидку: B-деревья, которые в общем-то тоже являются отчасти хэш-таблицами, применяются для простых ключей сплошь и рядом. Таблица страниц в твоем процессоре, внутренние структуры данных в ОС на твоем компьютере, СУБД и многое другое.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
It's kind of fun to do the impossible (Walt Disney)
Re[3]: hash_map<float,...> и пара <133.33,...>
От: _DAle_ Беларусь  
Дата: 05.10.05 18:06
Оценка:
Здравствуйте, Alex Alexandrov, Вы писали:

AA>Здравствуйте, SkyDance, Вы писали:


SD>>Всегда интересовала область применения hash_map & hash_set для простых ключей с быстрой операцией сравнения (int, float и т.п.).


AA>Навскидку: B-деревья, которые в общем-то тоже являются отчасти хэш-таблицами, применяются для простых ключей сплошь и рядом. Таблица страниц в твоем процессоре, внутренние структуры данных в ОС на твоем компьютере, СУБД и многое другое.


Немного не в тему, но хочется отметить, что B-деревья все же не имеют практически никакого отношения к hash_map, да и к хэш-таблицам в целом.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[4]: hash_map<float,...> и пара <133.33,...>
От: Alex Alexandrov США  
Дата: 05.10.05 19:23
Оценка:
Здравствуйте, _DAle_, Вы писали:

_DA>Здравствуйте, Alex Alexandrov, Вы писали:


AA>>Здравствуйте, SkyDance, Вы писали:


SD>>>Всегда интересовала область применения hash_map & hash_set для простых ключей с быстрой операцией сравнения (int, float и т.п.).


AA>>Навскидку: B-деревья, которые в общем-то тоже являются отчасти хэш-таблицами, применяются для простых ключей сплошь и рядом. Таблица страниц в твоем процессоре, внутренние структуры данных в ОС на твоем компьютере, СУБД и многое другое.


_DA>Немного не в тему, но хочется отметить, что B-деревья все же не имеют практически никакого отношения к hash_map, да и к хэш-таблицам в целом.


М-м-м... Может быть, я подтормаживаю, но мне показалось, аналогия есть. Например, таблица страниц в x86. Берем старшие 10 бит — получаем индекс каталога страниц, берем следующие 10 бит — получаем индекс описателя страницы внутри каталога. Понятно, что не совсем то, но аналогия, ИМХО, есть — замена чистого поиска отображением на индекс. Хотя, чувствую, я не совсем прав, и это не совсем B-дерево. Так?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
It's kind of fun to do the impossible (Walt Disney)
Re[5]: hash_map<float,...> и пара <133.33,...>
От: _DAle_ Беларусь  
Дата: 05.10.05 20:08
Оценка: 2 (1)
Здравствуйте, Alex Alexandrov, Вы писали:

AA>Здравствуйте, _DAle_, Вы писали:


_DA>>Здравствуйте, Alex Alexandrov, Вы писали:


AA>>>Здравствуйте, SkyDance, Вы писали:


SD>>>>Всегда интересовала область применения hash_map & hash_set для простых ключей с быстрой операцией сравнения (int, float и т.п.).


AA>>>Навскидку: B-деревья, которые в общем-то тоже являются отчасти хэш-таблицами, применяются для простых ключей сплошь и рядом. Таблица страниц в твоем процессоре, внутренние структуры данных в ОС на твоем компьютере, СУБД и многое другое.


_DA>>Немного не в тему, но хочется отметить, что B-деревья все же не имеют практически никакого отношения к hash_map, да и к хэш-таблицам в целом.


AA>М-м-м... Может быть, я подтормаживаю, но мне показалось, аналогия есть. Например, таблица страниц в x86. Берем старшие 10 бит — получаем индекс каталога страниц, берем следующие 10 бит — получаем индекс описателя страницы внутри каталога. Понятно, что не совсем то, но аналогия, ИМХО, есть — замена чистого поиска отображением на индекс. Хотя, чувствую, я не совсем прав, и это не совсем B-дерево. Так?


Это не совсем B-дерево. В двух словах на всякий случай напомню:
— В-дерево представляет собой древовидную структуру данных.
— Каждый узел дерева, не являющийся листом, имеет от a до b дочерних узлов.
— Структура хранит элементы упорядоченными, обеспечивает амортизированную логарифмическую сложность вставки и удаления элемента.
— Используется в основном в случаях, когда в памяти хранится только небольшая часть информации, и необходимо минимизировать количество обращений к внешнему носителю при поиске. Достигается это с помощью выбора достаточно больших констант, ограничивающих количество дочерних узлов, таким образом уменьшая глубину дерева (а следовательно и количество обращений к "диску").

А хэш-таблицы, например, в отличие от B-trees
-не являются древовидной структурой
-не хранят элементы упорядоченными
-сложность добавления/удаления/поиска в среднем константные
-использует хэш-функцию, удовлетворяющую определенным требованиям
Ну и в целом служат для других целей.
Re[3]: hash_map<float,...> и пара <133.33,...>
От: SkyDance Земля  
Дата: 06.10.05 06:33
Оценка:
"Alex Alexandrov" <20458@users.rsdn.ru> wrote in message news:1420613@news.rsdn.ru...
> Навскидку: B-деревья, которые в общем-то тоже являются
> отчасти хэш-таблицами

Эээ, с этим я не совсем согласен, это разные структуры данных.
Меня интересует область применения структур вроде hash_map<int, some_type>, hash_set<float, some_type>. На какой конкретной задаче вычисление хэша и поддержание bucket'ов при изменении таблицы будет дешевле, чем поиск в AVL / RB tree?
Posted via RSDN NNTP Server 1.9
Re[4]: hash_map<float,...> и пара <133.33,...>
От: _DAle_ Беларусь  
Дата: 06.10.05 09:41
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>"Alex Alexandrov" <20458@users.rsdn.ru> wrote in message news:1420613@news.rsdn.ru...

>> Навскидку: B-деревья, которые в общем-то тоже являются
>> отчасти хэш-таблицами

SD>Эээ, с этим я не совсем согласен, это разные структуры данных.

SD>Меня интересует область применения структур вроде hash_map<int, some_type>, hash_set<float, some_type>. На какой конкретной задаче вычисление хэша и поддержание bucket'ов при изменении таблицы будет дешевле, чем поиск в AVL / RB tree?

Если хэш-функция достаточно быстро вычисляется, то при больших объемах данных операции с hash_map будут производиться быстрее. А вообще надо рассматривать конкретный набор и частоту операций.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.