编辑:请注意,我并不是在问为什么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的行为类似于一组pair,所以我期待结果是2。
直觉上,这与C++的std::map
行为不一致,其中insert
不总是更改映射(与operator[]
相反)。
它背后是否有理由,还是仅仅是随意的呢?
std::set<std::pair<std::string, std::string> > >
是你要找的容器?它可以保存两个条目。 - Sjoerd