|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
Контейнер hash_map17.06.2013, 02:12. Показов 13827. Ответов 55
Метки нет (Все метки)
Здорова!
Нужно создать контейнер hash_map это тот же контейнер как и map, только он в разы иногда раз в 10-20 быстрее осуществляет поиск элементов по ключу чем стандартный контейнер map, поэтому если нужен быстрый поиск, то советуют использовать свой hash_map. В общем ребятки какой будет алгоритм создания? Я видел внутреннее представление этого контейнера, так там внутри просто два вектора, один с объектами, а второй с указателями. Интересно как же он работает или по какому алгоритму его строить? Это задачка из книги Страуструпа. Нужно потом будет еще создать hash_set, hash_multiset или я точно не помню еще какието.
0
|
|
| 17.06.2013, 02:12 | |
|
Ответы с готовыми решениями:
55
Контейнер на пободия hash_map. Hash_map unordered_map <hash_map> is deprecated and will be REMOVED |
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||||||||||
| 20.06.2013, 14:05 [ТС] | |||||||||||
|
Тут снова ошибка вылазить
Вот код:
ошбика: 1>------ Построение начато: проект: test, Конфигурация: Debug Win32 ------ 1> main.cpp 1>c:\program files\microsoft visual studio 10.0\vc\include\xutility(2692): error C2440: =: невозможно преобразовать "const int" в "Entry *" 1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции 1> c:\program files\microsoft visual studio 10.0\vc\include\xutility(2715): см. ссылку на создание экземпляров функции шаблон при компиляции "void std::_Fill<Entry**,_Ty>(_FwdIt,_FwdIt,co nst _Ty &)" 1> with 1> [ 1> _Ty=int, 1> _FwdIt=Entry ** 1> ] 1> c:\test\test\test\main.cpp(34): см. ссылку на создание экземпляров функции шаблон при компиляции "void std::fill<std::_Vector_iterator<_Myvec>, int>(_FwdIt,_FwdIt,const _Ty &)" 1> with 1> [ 1> _Myvec=std::_Vector_val<Entry *,std::allocator<Entry *>>, 1> _FwdIt=std::_Vector_iterator<std::_Vecto r_val<Entry *,std::allocator<Entry *>>>, 1> _Ty=int 1> ] ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== Если я просто через итератор обнуляю то все нормально, что в книге тогда ошиблись? От шаблон класса fill:
0
|
|||||||||||
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
||||||
| 20.06.2013, 14:13 | ||||||
|
А каким боком это относится к хеш таблицам?
1
|
||||||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||||||
| 20.06.2013, 14:19 | |||||||
хоть это и криво
1
|
|||||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 20.06.2013, 14:34 [ТС] | ||
|
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 20.06.2013, 14:37 | ||||||
|
Если С++11 нет
1
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 20.06.2013, 14:55 | |
|
2
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||||||||||||||||||||
| 20.06.2013, 15:06 [ТС] | |||||||||||||||||||||
|
Я уже тут с книги тот код что есть как бы запустил и чуток протестил кое что.
Вот файл hash_map.h:
От как вы думаете правильно ли я все сделал, там файлы слепил? Структура шаблона правильная или нет? Мб как то лучше можно сделать само оформление? В логику программы не вникаем это мелочь. Добавлено через 1 минуту А еще отето от что за фигня в книге она есть, я просто ее закоментировал, что бы не мешалась?
Это похоже какой то конструктор преобразования наверно? Наверно два итератора принимает начало и конец, в общем хз. Добавлено через 51 секунду Да точно конструктор преобразования.
0
|
|||||||||||||||||||||
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
|
| 20.06.2013, 15:07 | |
|
0
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 20.06.2013, 15:15 [ТС] | |
|
Сама хеш таблица как создается не понятно от если у нас в b всего 101 ячейка, а в v ничего нету (это при пустом hash_map), то что ж тогда хешь функция должна генерировать хэш в пределах 0-101?????? , а если она случайно сгенерирует 102 и мы попытаемся в b[102] записать какое то значение это что будет UB ??
Добавлено через 2 минуты Даже не 102, а 101.
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 20.06.2013, 15:40 | |
|
Tulosba, Да, с пустым я конечно протормозил.) Спасибо.
0
|
|
| 20.06.2013, 15:44 | |
|
Не по теме: ForEveR, хорошо быть модератором. Взял подправил
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 27.06.2013, 19:57 [ТС] | |
|
А как же сделать hash_multimap ????? Как в нем будет хэш использоваться? В multimap вроде как нету операции operator[]() ???
0
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 28.06.2013, 20:44 [ТС] | |
|
Что никто не знает как хэш использовать в контейнерах hash_multimap, hash_set и hash_multiset????????
Там просто нету operator[]() поэтому фиг его знает как поиск осуществлять, не ну понятно как делать поиск перебрать все элементы, ну а как хэш привязать? Или просто сделать копии multimap, set и multiset и не парится с хэшем ????? Хотябы примитивные копии с итераторами и все, я думаю пол задачи сделаю, на троечку ???
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 28.06.2013, 21:04 | |
|
@ninja2, Читаем - просвещаемся. http://en.cppreference.com/w/c... d_multimap
0
|
|
|
|
|
| 28.06.2013, 21:19 | |
|
Вообще перед всем этим делом не мешало бы просветиться в этой области. Гуглим "хеш таблицы с цепочками коллизий" и "хеш таблицы с открытой адресацией". Плюс еще методы хеширования (мультипликативный, т.н. квадратичный и т.д.). Далее формулы выбора размера таблицы в зависимости от типа ключа и метода хеширования, ну и т.д. и т.п.
Тупо опираясь на справку по STL такие вещи не напишешь.
0
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 28.06.2013, 23:24 [ТС] | |
|
Та там долго вникать, я так подумал, наверно я просто сделаю multimep, set и multiset как аналоги из стл, быстрее будет, а то с хэшем долго затянится, когда нибудь в другой раз вникну, хоть на половину задачку сделаю на троечку.
Добавлено через 1 минуту @Kastaneda, Да да это похоже головняк.
0
|
|
| 28.06.2013, 23:24 | |
|
Hash_Map Error (C2338) Stdext::hash_map и std::map Ошибка <hash_map> при выполнении программы Чем отличается map и hash_map в плюсах? контейнер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|