aydarbiktimirov

Untitled

Apr 21st, 2012
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. class IPersistentDataStructure
  2. {
  3.  
  4.     public:
  5.         virtual ~IPersistentDataStructure();
  6.  
  7.         virtual IPersistentDataStructure &SetVersion(size_t) = 0;
  8.         virtual size_t GetVersionCount() const = 0;
  9.         virtual size_t GetCurrentVersion() const = 0;
  10.  
  11. };
  12.  
  13. class CAbstractPersistentDataStructure:
  14.     public IPersistentDataStructure
  15. {
  16.  
  17.     public:
  18.         CAbstractPersistentDataStructure();
  19.         CAbstractPersistentDataStructure(const CAbstractPersistentDataStructure &);
  20.  
  21.         CAbstractPersistentDataStructure &operator=(const CAbstractPersistentDataStructure &);
  22.  
  23.         // ...
  24.  
  25. };
  26.  
  27. template<typename T, typename Operation>
  28. class ISegmentTree
  29. {
  30.  
  31.     public:
  32.         virtual ~ISegmentTree();
  33.  
  34.         virtual ISegmentTree<T, Operation> &Change(size_t, const T &) = 0;
  35.         virtual T operator()(size_t, size_t) const = 0;
  36.  
  37. };
  38.  
  39. template<typename T, typename Operation, T DefaultValue>
  40. class CSegmentTree:
  41.     public ISegmentTree<T, Operation>
  42. {
  43.  
  44.     public:
  45.         template<typename InputIterator>
  46.         CSegmentTree(InputIterator, InputIterator);
  47.         CSegmentTree(const CSegmentTree<T, Operation, DefaultValue> &);
  48.  
  49.         // ...
  50.  
  51. };
  52.  
  53. template<typename T, typename Operation, T DefaultValue>
  54. class CPersistentSegmentTree:
  55.     public CAbstractPersistentDataStructure, public ISegmentTree<T, Operation>
  56. {
  57.  
  58.     public:
  59.         template<typename InputIterator>
  60.         CPersistentSegmentTree(InputIterator, InputIterator);
  61.         CPersistentSegmentTree(const CPersistentSegmentTree<T, Operation, DefaultValue> &);
  62.  
  63.         // ...
  64.  
  65. };
Advertisement
Add Comment
Please, Sign In to add comment