РЕДАКТИРОВАТЬ: Обратите внимание: я НЕ спрашивает, почему 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.
Интуитивно, это не согласуется с поведением С++ std::map
, где insert
не всегда меняет карту (в отличие от operator[]
).
Есть ли обоснование позади, или это просто произвольно?