c++ - Unordered_Map of Maps 还是 Priority_Queues?

标签 c++ hash dictionary priority-queue unordered-map

我有一个包含姓名和年龄的结构。我想要的是有一个 unordered_map,它将一个字符串作为它的键,然后是一个 map 或一个 priority_queue,然后存储给定该字符串的年龄:

struct Person{
   string name;
   int age;

   bool operator() (const Person &other){}
};    

unordered_map<string,priority_queue<Person,vector<Person>> map;
    or 
unordered_map<string,map<int,Persons>> map;

我知道我的声明语法是完全正确的,但希望你明白了......

为了获得最佳性能,我应该选择哪个?这个想法是为了能够非常快速地搜索、插入和删除。

最佳答案

priority_queue 是一种非常特殊的数据结构,它支持一组有限的操作:获取大小、获取或删除最大元素、添加新元素。因此,如果您需要随机访问和删除元素,map 是这两个选项中唯一有效的选择。

一般来说,它们都在 O(log N) 中工作。 priority_queue 速度更快但功能较弱。它更快,因为它使用堆而不是平衡树,这导致更好的内存使用(所有元素都位于同一内存块中)和更少的内存(重新)分配。

关于c++ - Unordered_Map of Maps 还是 Priority_Queues?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19801411/

相关文章:

c# - 使用MemoryBarrier传播Dictionary <int,T>多线程应用程序中的更改

c++ - 我在这里使用 "cin.get"有什么问题?

c++ - for循环中c++中的时间(以毫秒为单位)始终相同

c++ - 执行直接指针操作还是 [] 更好

c++ - 将 float 转换为定点数

sql - PostgreSQL 不使用 HashAgg 进行 UNION 查询

ruby - 从用户名生成 rgb 颜色(以可重复的方式)

ruby-on-rails - 列出给定语言的所有翻译 yml 键

c++ - 对 pair 和 double 的映射进行排序

python - 从 {index : list of row values} 形式的字典构造 Pandas DataFrame