我不太了解这个数据结构的目的.std::multimap<K, V>和之间的区别是什么std::map<K, std::vector<V>>.同样的事情std::multiset- 它可能只是std::map<K, int>int计算K的出现次数的地方.我是否遗漏了这些结构的用途?
一个反例似乎是有序的.
考虑按名称分组的AdressList中的PhoneEntry.
int AdressListCompare(const PhoneEntry& p1, const PhoneEntry& p2){
return p1.name<p2.name;
}
multiset<PhoneEntry, AdressListCompare> adressList;
adressList.insert( PhoneEntry("Cpt.G", "123-456", "Cellular") );
adressList.insert( PhoneEntry("Cpt.G", "234-567", "Work") );
// Getting the entries
addressList.equal_range( PhoneENtry("Cpt.G") ); // All numbers
Run Code Online (Sandbox Code Playgroud)
使用set + count这是不可行的.如果不需要此行为,则对象+计数方法似乎更快.例如multiset :: count()成员状态
"复杂性:大小对数+计数线性."