Этот сайт является отличной ссылкой на STL: http://www.sgi.com/tech/stl/
В основном, это говорит, что карта принимает обязательные 2 типа аргументов, Key
и Data
. Data
должно быть Assignable
, как сказал Даниил. Однако Key
, как утверждается, должен быть типом, который можно использовать с типом Compare
, т. Е. Compare
обозначает функциональный объект, параметры которого имеют тип Key
. В этом случае функциональным объектом по умолчанию Compare
является std::less<T>
, то есть Strict Weak Ordering
, который сравнивает объекты типа T
с использованием operator<
. Следовательно, если вы не измените тип Compare
, т.е. используете значение по умолчанию, std::less<T>
будет использоваться с типом Key
, и, таким образом, operator<
будет использоваться с типом Key
, и, следовательно, Key
необходимо быть сопоставимым с operator<
.
Надеюсь, это поможет! Я знаю, что это немного беспричинно, и я не хочу быть снисходительным, но я просто хочу убедиться, что абсолютно ясно, как вести себя по этому поводу.