Здравствуйте, Codealot, Вы писали:
S>>Но зачем?
C>Меньше расход памяти, и может быть быстрее.
На первый взгляд сомнительно. А есть какие-то примеры применения rope-структуры не для строк, а для чего-то другого?
S>>И непонятно в чем преимущество rope для T перед каким-нибудь условным списком чанков одинаковой емкости.
C>А это не частный случай веревки?
rope -- это дерево, причем желательно, чтобы оно было сбалансированным, т.е. при большом количестве кусочков оно должно быть "высоким". Тогда как список чанков -- это "плоская" структура.
Тут более актуален вопрос: а не является ли rope с листами фиксированной емкости (да еще и в которых есть пустоты) частным случаем какого-нибудь B-дерева?
S>>Как бы то ни было в контексте C++ rope вряд ли может дать те гарантии, какие дает список (они перечислялись выше).
C>Веревка позволяет реализовать даже доступ по индексу
Если нужен доступ по индексу, то список изначально мимо кассы.
C>и использовать пул заранее выделенных сегментов никто не запрещает.
Могу предположить, что геморра больше, т.к. rope гораздо более сложная структура, ее на коленке не сделаешь. В отличии от интрузивного списка.
C>"ссылки на содержимое не инвалидируются при модификации контейнера" — ну гипотетически может быть полезно, но я не помню ни одного примера, когда мне это понадобилось бы.