slon/fivt-993-elements-of-programming — Issue #6: Persistent Container Concept
Author: slon
Created: 2011-12-12 19:05:05+00:00
State: open

Наверно будет проще обсуждать это тут.

Итак, мы решили что наши контейнеры будут иметь stl совместимый интерфейс(методы изменяют внутреннее состояние объекта). Персистентность будет выражаться в том, что копирование объекта будет происходить за O(1).

Пока удалось придумать 2 проблемы, над которыми всем предлагается подумать.

1. Не понятно как должны вести себя итераторы.
* Если взять у контейнера константный итератор и поменять объект, какой версии должен этот итератор соответствовать, старой или новой?
* Как вообще должен себя вести неконстантный итератор? Если через него изменили контейнер, то по идее он должен соответствавать новой версии. Но что тогда случится со всеми остальными итераторами на старую версию? Переводить их на новую - это большой геморрой, но оставлять на старой как-то не логично.
* Скорее всего придётся для каждой конкретной структуры данных отдельно думать, какая будет семантика у итераторов.

2. Частично-персистентные структуры данных(хранят все версии, но изменять можно только последнюю).
* Как там будет работать сборка мусора?
* Как реализовать эти константные версии? Придётся писать отдельный класс для константной версии, или хватит просто const T.

[Вот сюда](https://github.com/slon/fivt-993-elements-of-programming/wiki/Persistent-Container-Concept) по мере осознавания будем записывать результаты.