Хеши в C++
От: ursaloff Украина http://www.ursaloff.mksat.net
Дата: 24.05.02 06:49
Оценка:
Здравствуйте Все!
Помогите начинающему программеру перелезть с перловки на си.
Есть вот в Perl замечательная штука "хеш". И избавляет она от многих гемороев в процессе написания программ потому что есть в ней пара "ключ" — "значение". И поиск по ней вести легко и удобно. И про поиск нужного значения в массиве можно забыть.
И думаю я как бы эту модную штуку использовать на си. Ведь такая задача встречается постоянно. А определять струкртуру типа ключ значение. Потом создавать массив из этих структур. А потом для поиска нужного значения делать цикл по всему массиву и искать это значение блин
Знаю что это не очень сложно, но так как отличаюсь поразительной ленью, очень хочится услышать про универсальный способ создания и поиска в хешах.
Rest Begards,
UrsaloFF
Re: Хеши в C++
От: Dima2  
Дата: 24.05.02 06:51
Оценка:
Здравствуйте ursaloff, Вы писали:

U>Знаю что это не очень сложно, но так как отличаюсь поразительной ленью, очень хочится услышать про универсальный способ создания и поиска в хешах.


Смотри std::map
Re: Хеши в C++
От: Esef Украина  
Дата: 24.05.02 06:56
Оценка:
Есть такая штука и в си. Называется MAP;

объявляешь что-то вроде

typedef map<ТипКлюча, ТипЗначения*> MYMAP

и дальше

MYMAP myMap;
Re[2]: Хеши в C++
От: ursaloff Украина http://www.ursaloff.mksat.net
Дата: 24.05.02 07:16
Оценка:
Здравствуйте Esef, Вы писали:

E>Есть такая штука и в си. Называется MAP;


E>объявляешь что-то вроде


E>typedef map<ТипКлюча, ТипЗначения*> MYMAP

E>и дальше
E>MYMAP myMap;
а как тогда забивать и вытаскивать значения по ключу?
к примеру:
typedef map<CString, CString*> MYMAP
MYMAP myHesh;


просто, честно давно не брал в руки книг по С
Rest Begards,
UrsaloFF
Re[3]: Хеши в C++
От: Esef Украина  
Дата: 24.05.02 07:23
Оценка:
U>а как тогда забивать и вытаскивать значения по ключу?
U>к примеру:
U>
U>typedef map<CString, CString*> MYMAP
U>MYMAP myHesh;
U>


U>просто, честно давно не брал в руки книг по С


Поищи в MSDN по map. Там готовый пример есть.
Re[4]: Хеши в C++
От: Аноним  
Дата: 24.05.02 07:55
Оценка:
Здравствуйте Esef, Вы писали:


U>>а как тогда забивать и вытаскивать значения по ключу?

U>>к примеру:
U>>
U>>typedef map<CString, CString*> MYMAP
U>>MYMAP myHesh;
U>>


U>>просто, честно давно не брал в руки книг по С :-\


E>Поищи в MSDN по map. Там готовый пример есть.



Вообще-то std::map — это не совсем хэш :) Операции поиска другую сложность имеют (O(log(N)) для map вместо константного для хэша), на множестве ключей для map должна быть определена упорядочивания. Хотя не знаю, может в перле хэш тоже не настоящий :) В принципе, для C++ реализации хэша вроде есть в SGI STL и, видимо, в STLPort.
Re[5]: Хеши в C++
От: Esef Украина  
Дата: 24.05.02 08:06
Оценка:
Здравствуйте Аноним, Вы писали:

А>Вообще-то std::map — это не совсем хэш Операции поиска другую сложность имеют (O(log(N)) для map вместо константного для хэша), на множестве ключей для map должна быть определена упорядочивания. Хотя не знаю, может в перле хэш тоже не настоящий В принципе, для C++ реализации хэша вроде есть в SGI STL и, видимо, в STLPort.


Если я не ошибаюсь, в стандартном C++ есть и настоящий хэш. Вот только не помню как он называется. В Страуструпе написанно, надо посмотреть
Re[6]: Хеши в C++
От: Mishka<T> Норвегия  
Дата: 24.05.02 08:15
Оценка:
Здравствуйте Esef,

E>Если я не ошибаюсь, в стандартном C++ есть и настоящий хэш. Вот только не помню как он называется. В Страуструпе написанно, надо посмотреть


См. hash_map. У Страуструпа п. 17.6.1
Re[6]: Хеши в C++
От: Sergey Россия  
Дата: 24.05.02 08:57
Оценка:
Здравствуйте Esef, Вы писали:

E>Здравствуйте Аноним, Вы писали:


А>>Вообще-то std::map — это не совсем хэш Операции поиска другую сложность имеют (O(log(N)) для map вместо константного для хэша), на множестве ключей для map должна быть определена упорядочивания. Хотя не знаю, может в перле хэш тоже не настоящий В принципе, для C++ реализации хэша вроде есть в SGI STL и, видимо, в STLPort.


E>Если я не ошибаюсь, в стандартном C++ есть и настоящий хэш. Вот только не помню как он называется. В Страуструпе написанно, надо посмотреть


Ошибаешься — hash_map нестандартный Да и у Страуструпа об этом вроде как открытым текстом говорится.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[7]: Хеши в C++
От: ursaloff Украина http://www.ursaloff.mksat.net
Дата: 24.05.02 09:13
Оценка:
Здравствуйте Mishka<T>, Вы писали:

MT>Здравствуйте Esef,


E>>Если я не ошибаюсь, в стандартном C++ есть и настоящий хэш. Вот только не помню как он называется. В Страуструпе написанно, надо посмотреть


MT>См. hash_map. У Страуструпа п. 17.6.1

никак не могу найти в электронном варианте. Везде там вроди бы до 13 главы только.
Где взять полный архив и желательно в ХТМЛ?
Спасибо
Rest Begards,
UrsaloFF
Re[3]: Хеши в C++
От: Аноним  
Дата: 24.05.02 09:34
Оценка:
Здравствуйте ursaloff, Вы писали:

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


E>>Есть такая штука и в си. Называется MAP;


E>>объявляешь что-то вроде


E>>typedef map<ТипКлюча, ТипЗначения*> MYMAP

E>>и дальше
E>>MYMAP myMap;
U>а как тогда забивать и вытаскивать значения по ключу?
U>к примеру:
U>
U>typedef map<CString, CString*> MYMAP
U>MYMAP myHesh;
U>


U>просто, честно давно не брал в руки книг по С :-\



std::map — это не совсем хэш. Это BTree.
Позволяет он применно тоже, что и хэш но:

Есть еще нестандартный контейнер std::hash_map
Его нет в действующем стандарте C++, но есть в draft-версии следующего.
hash_map входит в SGI STL (им пользуется, напр. gcc, может быть borland и некоторые др. компайлеры) и в STLPort
Re[5]: Хеши в C++
От: Vsevolod V.Burkutsky Россия  
Дата: 24.05.02 15:38
Оценка:
Здравствуйте Аноним, Вы писали:

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



U>>>а как тогда забивать и вытаскивать значения по ключу?

U>>>к примеру:
U>>>
U>>>typedef map<CString, CString*> MYMAP
U>>>MYMAP myHesh;
U>>>


U>>>просто, честно давно не брал в руки книг по С


E>>Поищи в MSDN по map. Там готовый пример есть.



А>Вообще-то std::map — это не совсем хэш Операции поиска другую сложность имеют (O(log(N)) для map вместо константного для хэша), на множестве ключей для map должна быть определена упорядочивания. Хотя не знаю, может в перле хэш тоже не настоящий В принципе, для C++ реализации хэша вроде есть в SGI STL и, видимо, в STLPort.


Ну если используется CString то можно и CMap (смотри в MSDN) , он как раз на хеше реализован.
With best regards
Vsevolod V.Burkutsky...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.