Я ищу библиотеку с красно-черным деревом и реализацией связанного списка, предлагающую итераторы, которые не работают быстро. Я хотел бы иметь ту же функциональность, что и в C ++ с использованием STL, а именно:
- вставка в дерево / список не делает недействительными никакие итераторы
- удаление делает недействительным только тот итератор, который указывает на удаляемый элемент
- можно как-то сохранить «положение» итератора и ссылаться на значение, на которое он указывает
Эта реализация была бы хороша, так как она предлагала бы возможность изменять список / дерево при использовании его части. Вот несколько примеров:
- получение соседнего элемента в связанном списке / красно-черном дереве с некоторым сохраненным значением в O (1)
- пакетное добавление / удаление (без ограничений, например одно удаление на приращение позиции)
- разбиение связанного списка в O (1) по позиции итератора
- более эффективное удаление при сохранении позиции итератора (например, если удерживать итераторы в позиции в связанном списке, удаление составляет O (1), а не O (N))
Мне также хотелось бы, чтобы эта библиотека / исходный код / реализация имела некоторую Apache / GPL-дружественную лицензию и была бы достаточно расширяемой (поэтому я могу вносить свои собственные модификации для реализации некоторых операций, таких как операции из примеров выше). 1023 *
Если такой библиотеки не существует, есть ли какая-нибудь другая библиотека, которая могла бы помочь мне реализовать эти две структуры данных самостоятельно?