Ключи в STD::MAP
От: RunderBin Россия  
Дата: 30.05.07 14:42
Оценка:
Можно ли использовать в качестве ключа для STL Map <key, ...> объект какого либо своего класса? Не возникнет ли проблемы с генерацией Хэш-таблицы ключей и поиском элемента?
Люди — ангелы презирающие условности, желающие восстановить друвнейшую связь со звездной динамомашиной в вечности мироздания
Re: Ключи в STD::MAP
От: av Россия  
Дата: 30.05.07 14:50
Оценка: +2
RB>Можно ли использовать в качестве ключа для STL Map <key, ...> объект какого либо своего класса? Не возникнет ли проблемы с генерацией Хэш-таблицы ключей и поиском элемента?

Можно.

std::map -- это двоичное сбалансированное дерево, а не хэш-таблица, так что никаких проблем с "генерацией хэшей" не будет.

Надо только обеспечить сравнимость экземпляров класса: либо определить для них opereator<, либо сделать собственную функцию сравнения и скармливать её в std::map.

А вообще -- читай мануалы, они рулез
Re[2]: Ключи в STD::MAP
От: Testus  
Дата: 30.05.07 17:37
Оценка:
Здравствуйте, av, Вы писали:

av>Можно.

av>std::map -- это двоичное сбалансированное дерево, а не хэш-таблица, так что никаких проблем с "генерацией хэшей" не будет.
av>Надо только обеспечить сравнимость экземпляров класса: либо определить для них opereator<, либо сделать собственную функцию сравнения и скармливать её в std::map.
av>А вообще -- читай мануалы, они рулез

и не забудь для своего класса конструктор копирования ( my_class( const my_class & other ) ) и оператор присваивания ( my_class & operator=( const my_class & other ) ) — во избежания не приятных моментов в работе с контейнерами.
Glück auf
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.