почему qmap использует skiplist вместо ob rb-tree?

Я удивляюсь, почему QMap реализован через структуру данных skiplist, а не rb-tree?
Там очень интересно ТАК нить о параллельных структурах данных и преимуществах списка пропусков по сравнению с rb-tree, за и против. Это действительно ОЧЕНЬ интересный диалог с полезными ссылками, но QMap не является потокобезопасным, он не выполняет блокировку мьютекса для синхронизации доступа из коробки. Это требует оболочки или подклассов.

Для меня не проще написать «ручной» пропущенный список вместо rb-дерева, так что это тоже не очевидно.

Есть ли какая-нибудь функция kill в контексте не поточно-безопасного контейнера Qt?

Tnx заранее.

7

Решение

Когда-то я тоже думал, что QMap разработан для обеспечения многопоточности и, таким образом, реализован как словарь на основе списка пропусков. По-видимому, это не является причиной. Это намного проще: «Меньше кода в исполняемом файле и меньше памяти на узел».

Действительно, QMap когда-то был реализован как RB-дерево.

Источник: Qt Quarterly 19, раздел «Ассоциативные контейнеры»

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]