Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class IPersistentDataStructure
- {
- public:
- virtual ~IPersistentDataStructure();
- virtual IPersistentDataStructure &SetVersion(size_t) = 0;
- virtual size_t GetVersionCount() const = 0;
- virtual size_t GetCurrentVersion() const = 0;
- };
- class CAbstractPersistentDataStructure:
- public IPersistentDataStructure
- {
- public:
- CAbstractPersistentDataStructure();
- CAbstractPersistentDataStructure(const CAbstractPersistentDataStructure &);
- CAbstractPersistentDataStructure &operator=(const CAbstractPersistentDataStructure &);
- // ...
- };
- template<typename T, typename Operation>
- class ISegmentTree
- {
- public:
- virtual ~ISegmentTree();
- virtual ISegmentTree<T, Operation> &Change(size_t, const T &) = 0;
- virtual T operator()(size_t, size_t) const = 0;
- };
- template<typename T, typename Operation, T DefaultValue>
- class CSegmentTree:
- public ISegmentTree<T, Operation>
- {
- public:
- template<typename InputIterator>
- CSegmentTree(InputIterator, InputIterator);
- CSegmentTree(const CSegmentTree<T, Operation, DefaultValue> &);
- // ...
- };
- template<typename T, typename Operation, T DefaultValue>
- class CPersistentSegmentTree:
- public CAbstractPersistentDataStructure, public ISegmentTree<T, Operation>
- {
- public:
- template<typename InputIterator>
- CPersistentSegmentTree(InputIterator, InputIterator);
- CPersistentSegmentTree(const CPersistentSegmentTree<T, Operation, DefaultValue> &);
- // ...
- };
Advertisement
Add Comment
Please, Sign In to add comment