【发布时间】:2014-07-18 12:31:57
【问题描述】:
我想保留 id 和 size 的运行记录,它们可以单独修改并通过 id 以及大小顺序进行访问。使用 STL,我唯一能想到的是:
-
set<pair<int,int>,custom_comp>每次修改时我都会删除并重新插入该对。最大的缺点:不能通过 id 访问,所以 O(N) 访问任何东西,因为没有使用哈希表,我必须遍历所有内容以通过 id 查找... -
unordered_map<int,int>当我需要它们时,我只是在其中转储和排序(或者搜索最大值,如果这就是我所需要的)。很大的缺点,O(N) 得到最大值,O(N log(N)) 排序(大概)。
不是世界末日,但如果有一个类似priority_queue 的容器允许访问整个堆或类似map 的容器可以在修改时重新排序(按值),那就太好了. STL中是否存在这样的事情?在升压?如果不是,为什么不呢? (至少这样,即使我不得不使用混乱的解决方案,我也会学到一些关于数据结构的知识)
【问题讨论】:
-
你的意思是当你修改“key”值时,应该自动使用地图?
-
提升多索引有优势
标签: c++ sorting c++11 boost stl