我不太了解这个数据结构的目的。 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
使用set + count这是不可行的。如果不需要此行为,则您的“对象+计数”方法似乎更快。例如multiset :: count()成员状态
“复杂性:尺寸为对数+
线性。”
关于c++11 - std::multimap的用例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6456882/