繁体   English   中英

stl :: map of stl :: sets的效率

[英]Efficieny of stl::map of stl::sets

我相信我想使用boost :: icl :: interval_map来解决问题( 这里描述的,如果interval_maps最终有效,我会发布一个完整的答案。)

我想用一个interval_map<unsigned long long, set<foo*>> ,但的boost :: ICL的文件中提到,有潜在的效率问题(下面 )。

我们使用字符串集的区间映射来引入interval_maps,因为它具有教学上的优点。 派对示例用于立即访问区间图的基本思想,并在重叠时进行聚合。 对于实际应用程序,不一定建议使用集合的interval_map。 它与std :: sets的std :: map具有相同的效率问题。 虽然使用interval_maps与关联值的数值和其他有效数据类型有一个很大的领域。

std :: map的std :: sets有哪些效率问题? 我该如何避免它们?

std::map<K, V>std::set<V>都是由指针链接的基于节点的容器。 遍历它们具有很好的复杂性保证(即,每个单独的操作最多为O(log n))但是实际上你需要相当大的容器以便比较重要,比如std::vector<std::pair<K, V>>特别是当KV是基本类型时。 基于节点的容器的主要性能问题是它们在内存中或多或少地随机布局,而现代CPU喜欢访问以某种形式聚集的数据。

当然,像往常一样,您需要测量在相当实际的数据集上的不同实现之间获得的时间,以确定哪个数据结构产生最佳性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM