Почему Multimap позволяет дублировать пары ключ-значение?

РЕДАКТИРОВАТЬ: Пожалуйста, обратите внимание, я НЕ спрашиваю, почему multimap не может содержать повторяющиеся ключи .

Что обоснование использования мульти-карты, позволяющей дублировать пары ключ-значение? (не ключей )

#include <map>
#include <string>
#include <iostream>

int
main(int argc, char** argv)
{
    std::multimap<std::string, std::string> m;
    m.insert(std::make_pair("A", "B"));
    m.insert(std::make_pair("A", "B"));
    m.insert(std::make_pair("A", "C"));
    std::cout << m.size() << std::endl;
    return 0;
}

Это напечатало 3, что меня несколько удивило, я ожидал, что multimap будет вести себя как набор пар , поэтому я ожидал 2.

Интуитивно понятно, это несовместимо с поведением C ++ std :: map , где insert не всегда изменяет карту (в отличие от operator [] ).

Есть ли объяснение этому, или это просто произвольно?

18
задан Alex B 12 April 2011 в 08:42
поделиться