Как контейнер с ++ «устанавливает» индентифицировать два одинаковых ключа? - PullRequest
0 голосов
/ 01 марта 2019

Его объявление следующее:

template<class T,class Compare=less<T>,class Alloc=allocator<T>> class set;

Как мы знаем, в «наборе» нет двух одинаковых ключей.Он использует «Сравнить» (по умолчанию less<T>) для сравнения двух ключей, что означает, что он может знать, что только один ключ меньше (less<T> возвращает true) или не меньше (less<T> возвращает false), чемдругой.

Как можно set избежать существования двух одинаковых ключей?

1 Ответ

0 голосов
/ 01 марта 2019

std::set определяет уникальность элементов следующим образом.

(выделение)

Везде, где стандартная библиотека использует требования сравнения, определяется уникальностьиспользуя отношение эквивалентности.В неточных терминах два объекта a и b считаются эквивалентными, если ни один из них не сравнивается меньше, чем другой: !comp(a, b) && !comp(b, a).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...