aydarbiktimirov icon

Untitled

aydarbiktimirov | PRO | 04/21/12 10:40:21 PM UTC | 0 ⭐ | 229 👁️ | Never ⏰ | []
C++ |

1.45 KB

|

None

|

0 👍

/

0 👎

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> &);
 
        // ...
 
};

Comments