我可以在没有地图执行任何旋转的情况下预加载STL地图吗?

pas*_*ena 7 c++ stl map

我已经对来自数据库的数据进行了排序以初始化STL映射.以后只有5%的数据会在地图内更改.

据我了解,每次插入都会产生旋转开销.是否可以绕过排序数据的开销?例如,是否有跳过旋转的选项,另一个STL算法要创建一个带有排序数据的平衡树?

PS:我知道最多只有2次旋转,但是想知道我是否可以进一步提高性能.

Aar*_*aid 8

我假设你只对有效加载初始排序数据感兴趣?

标准的map :: map(InputIterator first,InputIterator last)构造函数似乎做对了.

"对于迭代器构造函数,如果元素已根据comp排序,则迭代器之间的距离是线性的(复制结构).对于未排序的序列,该距离中的线性(N*logN)(排序,复制结构)."


Arl*_*len 0

如果必须使用映射,请考虑使用基于 gcc 策略的容器(如果可以)。它们比 STL 快得多。

http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/interface.html

  • “它们快得多......”[需要引用] (2认同)