РЕДАКТИРОВАТЬ: Этот ответ больше не отвечает на текущий вопрос. Я сохраню его таким, какой он есть, потому что за него проголосовали, поэтому он должен быть полезен для некоторых.
multi in multimap
означает тот факт, что одна и та же клавиша может встречаться , кратная раз.
Стандарт не ограничивает типиспользуется в качестве значения, поэтому нельзя предполагать, что operator==()
определено.Поскольку мы не хотим, чтобы результат вашего кода зависел от того, определен оператор == () или нет, он никогда не используется.
std::multimap
не является заменой std::map
.Как вы заметили, он ведет себя по-разному, когда один и тот же ключ вставляется несколько раз.Если вы хотите поведение std::map
, используйте std::map
.
Существует также std::multiset
.
Рационально: иногда хочется сохранить все старые записи для одного и того жеключ вокруг. [TBD: вставьте какой-нибудь пример сюда]
Лично я почти никогда не пользуюсь std::multimap
.Если мне нужно несколько записей для одного и того же ключа, я обычно полагаюсь на std::map<std::vector<T> >
.