Для использования класса в качестве ключа в ассоциативных контейнерах (например, std::map
, std::unordered_map
, std::set
, std::unordered_set
) необходимо реализовать следующее:
Для упорядоченных ассоциативных контейнеров (std::map
, std::set
):
operator<
): Этот оператор определяет порядок элементов и требуется по умолчанию компаратором std::less
. Контейнеры используют его для упорядочивания ключей. Либо:std::less
: Можно специализировать шаблон std::less
для своего типа класса, реализуя логику сравнения там, а не внутри класса.Для неупорядоченных ассоциативных контейнеров (std::unordered_map
, std::unordered_set
):
std::hash
для вашего типа класса. Это предпочтительный способ для интеграции с стандартной библиотекой.cpp
cpp
Для использования класса в качестве ключа в ассоциативных контейнерах (например, std::map
, std::unordered_map
, std::set
, std::unordered_set
) необходимо реализовать следующее:
Для упорядоченных ассоциативных контейнеров (std::map
, std::set
):
operator<
): Этот оператор определяет порядок элементов и требуется по умолчанию компаратором std::less
. Контейнеры используют его для упорядочивания ключей. Либо:std::less
: Можно специализировать шаблон std::less
для своего типа класса, реализуя логику сравнения там, а не внутри класса.Для неупорядоченных ассоциативных контейнеров (std::unordered_map
, std::unordered_set
):
std::hash
для вашего типа класса. Это предпочтительный способ для интеграции с стандартной библиотекой.cpp
cpp
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.