我不太了解这个数据结构的目的。 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/

10-13 04:45