我有一个包含姓名和年龄的结构。我想要的是有一个 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/