Можно ли использовать в качестве ключа для STL Map <key, ...> объект какого либо своего класса? Не возникнет ли проблемы с генерацией Хэш-таблицы ключей и поиском элемента?
Люди — ангелы презирающие условности, желающие восстановить друвнейшую связь со звездной динамомашиной в вечности мироздания
RB>Можно ли использовать в качестве ключа для STL Map <key, ...> объект какого либо своего класса? Не возникнет ли проблемы с генерацией Хэш-таблицы ключей и поиском элемента?
Можно.
std::map -- это двоичное сбалансированное дерево, а не хэш-таблица, так что никаких проблем с "генерацией хэшей" не будет.
Надо только обеспечить сравнимость экземпляров класса: либо определить для них opereator<, либо сделать собственную функцию сравнения и скармливать её в std::map.
А вообще -- читай мануалы, они рулез
Здравствуйте, av, Вы писали:
av>Можно.
av>std::map -- это двоичное сбалансированное дерево, а не хэш-таблица, так что никаких проблем с "генерацией хэшей" не будет.
av>Надо только обеспечить сравнимость экземпляров класса: либо определить для них opereator<, либо сделать собственную функцию сравнения и скармливать её в std::map.
av>А вообще -- читай мануалы, они рулез
и не забудь для своего класса конструктор копирования ( my_class( const my_class & other ) ) и оператор присваивания ( my_class & operator=( const my_class & other ) ) — во избежания не приятных моментов в работе с контейнерами.