Можно ли использовать std :: map или std :: set для замены рукописного двоичного дерева - PullRequest
0 голосов
/ 04 апреля 2020

При преобразовании кода C в C ++, есть ли способ использовать тот факт, что std :: map и std :: set реализуют красное / черное дерево?

Я поднял старую копию из книги сжатия данных, и были очистки и отладки кода. Когда я добрался до алгоритма LZSS (вариант LZ-77), я был впечатлен как простой концепцией, так и большим усилением сжатия по сравнению со статистическими методами.

Самое сложное Аспект кода - это не само сжатие, а тот факт, что он сохраняет индекс окна каждой строки в бинарном дереве поиска для быстрого поиска. Я обычно люблю писать на C ++, но оставляю свою программу на C, потому что не могу добиться какого-либо большого выигрыша в ясности, эффективности или чем-то еще. Похоже, делать нечего, кроме как связывать структуры данных и усложнять доступ к ним.

Я думал, что было бы проще, если бы я мог использовать std :: map или std :: set. Я "лаю не на том дереве"? Я подумал, что может быть даже другой способ, но иногда я не очень изобретательный.

Мой подход состоял в том, чтобы извлечь код сравнения из метода вставки дерева и использовать его в качестве критерия сравнения для std: :. комплект

...