为什么qmap使用skiplist而不是ob rb-tree?

时间:2012-10-01 10:28:01

标签: c++ qt red-black-tree skip-lists qmap

我觉得为什么QMap实现了跳过列表数据结构而不是rb-tree? 有关并发数据结构和跳过列表优于rb-tree,优点和缺点的非常有趣SO thread。它确实是非常有用的链接,但QMap不是线程安全的,它不会进行任何互斥锁定,以便开箱即用同步访问。它需要包装或子类化。

对我而言,编写“手工制作”的滑雪列表而不是rb-tree并不简单,所以这也不是很明显。

在非线程安全的Qt容器的上下文中是否有任何kill-feature?

提前Tnx。

1 个答案:

答案 0 :(得分:3)

我曾经认为QMap的设计是线程安全的,因此可以实现为基于跳过列表的字典。显然这似乎不是原因。它更简单:"可执行文件中的代码更少,每个节点的内存更少。"

实际上,QMap曾经被实现为RB树。

来源:Qt Quarterly 19, Section "Associative Containers"