0

我有一个由名称和年龄组成的结构。我想要的是有一个 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;

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

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

4

1 回答 1

1

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

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

于 2013-11-05T23:56:01.120 回答