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

soh*_*hel 7 c++ qt red-black-tree qmap skip-lists

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

对我来说,编写"手工制作"的滑雪列表而不是rb-tree并不简单,所以这也不是很明显.

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

Tnx提前.

lee*_*mes 3

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

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

来源:Qt Quarterly 19,“关联容器”部分