CSAutoKeyedSSkipList.h

Go to the documentation of this file.
00001 
00009 
00010 
00065 template <class K, class T, class Pr = std::less<K>, class R = RNG >
00066 class AutoKeyedSSkipList
00067 {
00068 public:
00069   class T0;
00070   class T1;
00071   friend class T0;
00072   friend class T1;
00074   typedef size_t size_type;
00076 
00079   typedef ptrdiff_t difference_type;
00081   typedef AutoKeyedSSkipList<K,T,Pr,R> container_type;
00083   typedef K key_type;
00085   typedef std::pair<const K, T> value_type;
00087   typedef ForwardIdxNode<value_type> node_type;
00089 
00094   typedef T0 iterator;
00096   typedef value_type* pointer;
00098   typedef value_type& reference;
00100   typedef T data_type;
00102   typedef T mapped_type;
00104   typedef T& mapped_type_reference;
00106   typedef const T const_mapped_type;
00108   typedef const T& const_mapped_type_reference;
00110   typedef const T& const_reference;
00112   typedef T1 const_iterator;
00114 
00117   typedef std::reverse_iterator<iterator> reverse_iterator;
00119   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
00121   typedef std::pair<iterator, bool> slpair;
00123   typedef std::pair<iterator, iterator> ipair;
00125   typedef std::pair<const_iterator, const_iterator> const_ipair;
00127   typedef Pr key_compare;
00128 
00130   class value_compare
00131     : public std::binary_function<value_type, value_type, bool>
00132   {
00133   friend container_type;
00134   public:
00135     bool operator()(const value_type& left, const value_type& right) const
00136       {return (comp(left.first, right.first)); }
00137   protected:
00138     value_compare(const key_compare &pr) : comp(pr) {}
00139     key_compare comp;
00140   };
00141 
00142 private:
00143   R rng; 
00144   key_compare KeyCompare; 
00145   value_compare ValueCompare; 
00146   unsigned int maxLevel; 
00147   unsigned int level;    
00148   node_type *head;  
00149   node_type *tail; 
00150   double probability; 
00151   size_type items; 
00152   mutable size_type scan_index; 
00153   mutable std::pair<size_type,node_type*> *update; 
00154 
00156 
00160   void Init(double probability,unsigned int maxLevel) {}
00161 
00163 
00168   node_type* Alloc(unsigned int level, const T &obj) {}
00169 
00171 
00175   node_type* Alloc(unsigned int level) {}
00176 
00178 
00181   void Free(node_type *item) {}
00182 
00184 
00187   unsigned int GenerateRandomLevel() const {}
00188 
00190   void adjust_levels() {}
00191 
00193 
00199   void scan(const key_type &val) const{}
00200 
00202 
00208   void scan(const value_type &val) const{}
00209 
00211 
00217   void scan(size_type index) const{}
00218 
00220 
00226   void scan(const node_type *nodex) const{}
00227 
00229 
00236   void scan(const iterator &where) const{}
00237 public:
00238 
00240 
00243   class T0 : public std::iterator<std::random_access_iterator_tag, value_type>
00244   {
00245   public:
00246     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00247     typedef std::random_acces_iterator_tag iterator_category;
00248     typedef typename baseclass::value_type value_type;
00249     typedef typename const baseclass::value_type* pointer;
00250     typedef typename const baseclass::value_type& reference;
00251     typedef ptrdiff_t difference_type;
00252 
00253     friend T1;
00254     friend container_type;
00255   private:
00256     container_type *container; 
00257     mutable size_type Findex; 
00258     node_type* node; 
00259   public:
00261     T0() {}
00262 
00264 
00267     T0(const T0 &t0){}
00268 
00270 
00273     T0(const T1 &t1){}
00274 
00276 
00282     T0(container_type *container, node_type* p){}
00283 
00285 
00290     T0(container_type *container, node_type* p, size_type index){}
00291 
00293 
00296     bool operator==(const T0& other) const{}
00297 
00299 
00302     bool operator!=(const T0& other) const{}
00303 
00305 
00308     bool operator==(const T1& other) const{}
00309 
00311 
00314     bool operator!=(const T1& other) const{}
00315 
00317 
00322     T0& operator++(){}
00323 
00325 
00330     T0 operator++(int){}
00331 
00333 
00338     T0& operator--(){}
00339 
00341 
00346     T0 operator--(int){}
00347 
00349 
00354     reference operator*() const{}
00355 
00357 
00362     pointer operator->() const{}
00363 
00365 
00368     bool operator<(const T0 &other) const{}
00369 
00371 
00374     bool operator<=(const T0 &other) const{}
00375 
00377 
00380     bool operator>(const T0 &other) const{}
00381 
00383 
00386     bool operator>=(const T0 &other) const{}
00387 
00389 
00392     bool operator<(const T1 &other) const{}
00393 
00395 
00398     bool operator<=(const T1 &other) const{}
00399 
00401 
00404     bool operator>(const T1 &other) const{}
00405 
00407 
00410     bool operator>=(const T1 &other) const{}
00411 
00413 
00417     T0 operator+(difference_type off) const{}
00418 
00420 
00424     T0 operator-(difference_type off) const{}
00425 
00427 
00431     T0& operator+=(difference_type off){}
00432 
00434 
00438     T0& operator-=(difference_type off){}
00439 
00441 
00445     difference_type operator-(const T0 &other) const{}
00446 
00448 
00452     difference_type operator-(const T1 &other) const{}
00453 
00455 
00461     int refresh(){}
00462 
00464 
00468     value_type& operator[](difference_type off) const{}
00469 
00471 
00474     size_type getIndex() const{}
00475   };
00476 
00478 
00481   class T1 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
00482   {
00483   public:
00484     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00485     typedef std::random_acces_iterator_tag iterator_category;
00486     typedef typename baseclass::value_type value_type;
00487     typedef typename const baseclass::value_type* pointer;
00488     typedef typename const baseclass::value_type& reference;
00489     typedef ptrdiff_t difference_type;
00490 
00491     friend T0;
00492     friend container_type;
00493   private:
00494     const container_type *container; 
00495     mutable size_type Findex; 
00496     const node_type* node; 
00497   public:
00499     T1() {}
00500 
00502 
00505     T1(const T1 &t1){}
00506 
00508 
00511     T1(const T0 &t0){}
00512 
00514 
00520     T1(container_type *container, node_type* p){}
00521 
00523 
00528     T1(container_type *container, node_type* p, size_type index){}
00529 
00531 
00534     bool operator==(const T0& other) const{}
00535 
00537 
00540     bool operator!=(const T0& other) const{}
00541 
00543 
00546     bool operator==(const T1& other) const{}
00547 
00549 
00552     bool operator!=(const T1& other) const{}
00553 
00555 
00560     T1& operator++(){}
00561 
00563 
00568     T1 operator++(int){}
00569 
00571 
00576     T1& operator--(){}
00577 
00579 
00584     T1 operator--(int){}
00585 
00587 
00592     reference operator*() const{}
00593 
00595 
00600     pointer operator->() const{}
00601 
00603 
00606     bool operator<(const T0 &other) const{}
00607 
00609 
00612     bool operator<=(const T0 &other) const{}
00613 
00615 
00618     bool operator>(const T0 &other) const{}
00619 
00621 
00624     bool operator>=(const T0 &other) const{}
00625 
00627 
00630     bool operator<(const T1 &other) const{}
00631 
00633 
00636     bool operator<=(const T1 &other) const{}
00637 
00639 
00642     bool operator>(const T1 &other) const{}
00643 
00645 
00648     bool operator>=(const T1 &other) const{}
00649 
00651 
00655     T1 operator+(difference_type off) const{}
00656 
00658 
00662     T1 operator-(difference_type off) const{}
00663 
00665 
00669     T1& operator+=(difference_type off){}
00670 
00672 
00676     T1& operator-=(difference_type off){}
00677 
00679 
00683     difference_type operator-(const T0 &other) const{}
00684 
00686 
00690     difference_type operator-(const T1 &other) const{}
00691 
00693 
00699     int refresh(){}
00700 
00702 
00706     value_type& operator[](difference_type off) const{}
00707 
00709 
00712     size_type getIndex() const{}
00713 
00714   };
00715 
00717 
00721   AutoKeyedSSkipList(){}
00722 
00724 
00730   explicit AutoKeyedSSkipList(size_type maxNodes){}
00731 
00733 
00737   AutoKeyedSSkipList(double probability, unsigned int maxLevel){}
00738 
00740 
00745   AutoKeyedSSkipList(const container_type &source){}
00746 
00748 
00755   template<class InIt> AutoKeyedSSkipList(InIt first, InIt last){}
00756 
00758 
00764   template<class InIt> AutoKeyedSSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
00765 
00767 
00775   template<class InIt> AutoKeyedSSkipList(InIt first, InIt last, size_type maxNodes){}
00776 
00778 
00784   explicit AutoKeyedSSkipList(const key_compare& comp){}
00785 
00787 
00795   template<class InIt> AutoKeyedSSkipList(InIt first, InIt last, const key_compare& comp){}
00796 
00798 
00805   template<class InIt> AutoKeyedSSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
00806 
00808 
00817   template<class InIt> AutoKeyedSSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
00818 
00820 
00823   ~AutoKeyedSSkipList(){}
00824 
00825 
00827 
00833   container_type& operator=(const container_type &source){}
00834 
00836 
00839   iterator begin(){}
00840 
00842 
00845   iterator end(){}
00846 
00848 
00851   const_iterator begin() const{}
00852 
00854 
00857   const_iterator end() const{}
00858 
00860 
00863   reverse_iterator rbegin(){}
00864 
00866 
00869   reverse_iterator rend(){}
00870 
00872 
00875   const_reverse_iterator rbegin() const{}
00876 
00878 
00881   const_reverse_iterator rend() const{}
00882 
00884 
00887   size_type size() const{}
00888 
00890 
00893   bool empty() const{}
00894 
00896 
00899   reference front(){}
00900 
00902 
00905   const_reference front() const{}
00906 
00908 
00911   reference back(){}
00912 
00914 
00917   const_reference back() const{}
00918 
00920   void pop_front(){}
00921 
00923   void destroy_front(){}
00924 
00926   void pop_back(){}
00927 
00929   void destroy_back(){}
00930 
00932 
00936   template<class InIt> void assign(InIt first, InIt last){}
00937 
00939 
00949   slpair insert(const value_type& val){}
00950 
00952 
00958   iterator insert(const iterator &where, const value_type& val) {}
00959 
00961 
00965   template<class InIt> void insert(InIt first, InIt last) {}
00966 
00968   void clear(){}
00969 
00971   void destroy(){}
00972 
00974   iterator erase(const iterator &where){}
00975 
00977   iterator destroy(const iterator &where){}
00978 
00980 
00987   iterator erase(const iterator &first, const iterator &last){}
00988 
00990 
00997   iterator destroy(const iterator &first, const iterator &last){}
00998 
01000 
01004   size_type erase(const key_type &keyval){}
01005 
01007 
01011   size_type destroy(const key_type &keyval){}
01012 
01014 
01018   iterator erase_index(size_type index);
01019 
01021 
01025   iterator destroy_index(size_type index);
01026 
01028 
01031   void swap(container_type& right) {}
01032 
01034 
01037   template<class Pr1> void erase_if(Pr1 pred);
01038 
01040 
01043   template<class Pr4> void destroy_if(Pr4 pred);
01044 
01046 
01057   void cut(const iterator &first, const iterator &last, container_type& right);
01058 
01060 
01066   mapped_type_reference operator[](size_type index){}
01067 
01069 
01075   const_mapped_type_reference operator[](size_type index) const{}
01076 
01078 
01084   mapped_type_reference at(size_type off){}
01085 
01087 
01093   const_mapped_type_reference at(size_type off) const{}
01094 
01096 
01102   mapped_type_reference operator[](const key_type& key){}
01103 
01105 
01111   const_mapped_type_reference operator[](const key_type& key) const{}
01112 
01114 
01120   mapped_type_reference operator()(const key_type& key){}
01121 
01123 
01129   const_mapped_type_reference operator()(const key_type& key) const{}
01130 
01132   key_compare key_comp() const { }
01133 
01135   value_compare value_comp() const { }
01136 
01138   size_type max_size() const{}
01139 
01141 
01147   const key_type& key(const value_type& value) const {}
01148 
01150 
01156   mapped_type& value(value_type& value) {}
01157 
01159 
01163   iterator find(const key_type& keyval) {}
01164 
01166 
01170   const_iterator find(const key_type& keyval) const {}
01171 
01173 
01177   size_type count(const key_type& keyval) const {}
01178 
01179 
01181 
01185   iterator lower_bound(const key_type& keyval) {}
01186 
01188 
01192   const_iterator lower_bound(const key_type& keyval) const {}
01193 
01195 
01199   iterator upper_bound(const key_type& keyval) {}
01200 
01202 
01206   const_iterator upper_bound(const key_type& keyval) const {}
01207 
01209 
01213   ipair equal_range(const key_type& keyval) {}
01214 
01216 
01220   const_ipair equal_range(const key_type& keyval) const {}
01221 };
01222 
01224 
01229 template <class K, class T, class Pr, class R>
01230 bool operator==(const AutoKeyedSSkipList<K,T,Pr,R> &left, const AutoKeyedSSkipList<K,T,Pr,R> &right)
01231 {
01232   return ((left.size() == right.size()) &&
01233           (std::equal(left.begin(), left.end(), right.begin())));
01234 
01235 }
01236 
01238 
01243 template <class K, class T, class Pr, class R>
01244 bool operator!=(const AutoKeyedSSkipList<K,T,Pr,R> &left, const AutoKeyedSSkipList<K,T,Pr,R> &right)
01245 {
01246   return !(left==right);
01247 }
01248 
01250 
01255 template <class K, class T, class Pr, class R>
01256 bool operator<(const AutoKeyedSSkipList<K,T,Pr,R> &left, const AutoKeyedSSkipList<K,T,Pr,R> &right)
01257 {
01258   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
01259 }
01260 
01262 
01267 template <class K, class T, class Pr, class R>
01268 bool operator<=(const AutoKeyedSSkipList<K,T,Pr,R> &left, const AutoKeyedSSkipList<K,T,Pr,R> &right)
01269 {
01270   return !(right < left);
01271 }
01272 
01274 
01279 template <class K, class T, class Pr, class R>
01280 bool operator>(const AutoKeyedSSkipList<K,T,Pr,R> &left, const AutoKeyedSSkipList<K,T,Pr,R> &right)
01281 {
01282   return (right < left);
01283 }
01284 
01286 
01291 template <class K, class T, class Pr, class R>
01292 bool operator>=(const AutoKeyedSSkipList<K,T,Pr,R> &left, const AutoKeyedSSkipList<K,T,Pr,R> &right)
01293 {
01294   return !(left < right);
01295 }
01296 
01297 /*#define csarg1 template <class T, class Pr, class R>
01298 #define csarg2 AutoKeyedSSkipList<K,T,Pr,R>
01299 CSDefineCompOps(csarg1, csarg2)
01300 #undef csarg1
01301 #undef csarg2
01302 
01303 #undef CSUNIQUE
01304 #define CSUNIQUE(a,b) b
01305 */
01306 
01308 
01363 template <class K, class T, class Pr = std::less<K>, class R = RNG >
01364 class MultiAutoKeyedSSkipList
01365 {
01366 public:
01367   class T0;
01368   class T1;
01369   friend class T0;
01370   friend class T1;
01372   typedef size_t size_type;
01374 
01377   typedef ptrdiff_t difference_type;
01379   typedef MultiAutoKeyedSSkipList<K,T,Pr,R> container_type;
01381   typedef K key_type;
01383   typedef std::pair<const K, T> value_type;
01385   typedef ForwardIdxNode<value_type> node_type;
01387 
01392   typedef T0 iterator;
01394   typedef value_type* pointer;
01396   typedef value_type& reference;
01398   typedef T data_type;
01400   typedef T mapped_type;
01402   typedef T& mapped_type_reference;
01404   typedef const T const_mapped_type;
01406   typedef const T& const_mapped_type_reference;
01408   typedef const T& const_reference;
01410   typedef T1 const_iterator;
01412 
01415   typedef std::reverse_iterator<iterator> reverse_iterator;
01417   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
01419   typedef std::pair<iterator, iterator> ipair;
01421   typedef std::pair<const_iterator, const_iterator> const_ipair;
01423   typedef Pr key_compare;
01424 
01426   class value_compare
01427     : public std::binary_function<value_type, value_type, bool>
01428   {
01429   friend container_type;
01430   public:
01431     bool operator()(const value_type& left, const value_type& right) const
01432       {return (comp(left.first, right.first)); }
01433   protected:
01434     value_compare(const key_compare &pr) : comp(pr) {}
01435     key_compare comp;
01436   };
01437 
01438 private:
01439   R rng; 
01440   key_compare KeyCompare; 
01441   value_compare ValueCompare; 
01442   unsigned int maxLevel; 
01443   unsigned int level;    
01444   node_type *head;  
01445   node_type *tail; 
01446   double probability; 
01447   size_type items; 
01448   mutable size_type scan_index; 
01449   mutable std::pair<size_type,node_type*> *update; 
01450 
01452 
01456   void Init(double probability,unsigned int maxLevel) {}
01457 
01459 
01464   node_type* Alloc(unsigned int level, const T &obj) {}
01465 
01467 
01471   node_type* Alloc(unsigned int level) {}
01472 
01474 
01477   void Free(node_type *item) {}
01478 
01480 
01483   unsigned int GenerateRandomLevel() const {}
01484 
01486   void adjust_levels() {}
01487 
01489 
01495   void scan(const key_type &val) const{}
01496 
01498 
01504   void scan(const value_type &val) const{}
01505 
01507 
01513   void scan(size_type index) const{}
01514 
01516 
01522   void scan(const node_type *nodex) const{}
01523 
01525 
01532   void scan(const iterator &where) const{}
01533 
01534 public:
01536 
01539   class T0 : public std::iterator<std::random_access_iterator_tag, value_type>
01540   {
01541   public:
01542     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01543     typedef std::random_acces_iterator_tag iterator_category;
01544     typedef typename baseclass::value_type value_type;
01545     typedef typename baseclass::value_type* pointer;
01546     typedef typename baseclass::value_type& reference;
01547     typedef ptrdiff_t difference_type;
01548 
01549     friend T1;
01550     friend container_type;
01551   private:
01552     container_type *container; 
01553     mutable size_type Findex; 
01554     node_type* node; 
01555   public:
01557     T0() {}
01558 
01560 
01563     T0(const T0 &t0){}
01564 
01566 
01569     T0(const T1 &t1){}
01570 
01572 
01578     T0(container_type *container, node_type* p){}
01579 
01581 
01586     T0(container_type *container, node_type* p, size_type index){}
01587 
01589 
01592     bool operator==(const T0& other) const{}
01593 
01595 
01598     bool operator!=(const T0& other) const{}
01599 
01601 
01604     bool operator==(const T1& other) const{}
01605 
01607 
01610     bool operator!=(const T1& other) const{}
01611 
01613 
01618     T0& operator++(){}
01619 
01621 
01626     T0 operator++(int){}
01627 
01629 
01634     T0& operator--(){}
01635 
01637 
01642     T0 operator--(int){}
01643 
01645 
01650     reference operator*() const{}
01651 
01653 
01658     pointer operator->() const{}
01659 
01661 
01664     bool operator<(const T0 &other) const{}
01665 
01667 
01670     bool operator<=(const T0 &other) const{}
01671 
01673 
01676     bool operator>(const T0 &other) const{}
01677 
01679 
01682     bool operator>=(const T0 &other) const{}
01683 
01685 
01688     bool operator<(const T1 &other) const{}
01689 
01691 
01694     bool operator<=(const T1 &other) const{}
01695 
01697 
01700     bool operator>(const T1 &other) const{}
01701 
01703 
01706     bool operator>=(const T1 &other) const{}
01707 
01709 
01713     T0 operator+(difference_type off) const{}
01714 
01716 
01720     T0 operator-(difference_type off) const{}
01721 
01723 
01727     T0& operator+=(difference_type off){}
01728 
01730 
01734     T0& operator-=(difference_type off){}
01735 
01737 
01741     difference_type operator-(const T0 &other) const{}
01742 
01744 
01748     difference_type operator-(const T1 &other) const{}
01749 
01751 
01757     int refresh(){}
01758 
01760 
01764     value_type& operator[](difference_type off) const{}
01765 
01767 
01770     size_type getIndex() const{}
01771   };
01772 
01774 
01777   class T1 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
01778   {
01779   public:
01780     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01781     typedef std::random_acces_iterator_tag iterator_category;
01782     typedef typename baseclass::value_type value_type;
01783     typedef typename const baseclass::value_type* pointer;
01784     typedef typename const baseclass::value_type& reference;
01785     typedef ptrdiff_t difference_type;
01786 
01787     friend T0;
01788     friend container_type;
01789   private:
01790     const container_type *container; 
01791     mutable size_type Findex; 
01792     const node_type* node; 
01793   public:
01795     T1() {}
01796 
01798 
01801     T1(const T1 &t1){}
01802 
01804 
01807     T1(const T0 &t0){}
01808 
01810 
01816     T1(container_type *container, node_type* p){}
01817 
01819 
01824     T1(container_type *container, node_type* p, size_type index){}
01825 
01827 
01830     bool operator==(const T0& other) const{}
01831 
01833 
01836     bool operator!=(const T0& other) const{}
01837 
01839 
01842     bool operator==(const T1& other) const{}
01843 
01845 
01848     bool operator!=(const T1& other) const{}
01849 
01851 
01856     T1& operator++(){}
01857 
01859 
01864     T1 operator++(int){}
01865 
01867 
01872     T1& operator--(){}
01873 
01875 
01880     T1 operator--(int){}
01881 
01883 
01888     reference operator*() const{}
01889 
01891 
01896     pointer operator->() const{}
01897 
01899 
01902     bool operator<(const T0 &other) const{}
01903 
01905 
01908     bool operator<=(const T0 &other) const{}
01909 
01911 
01914     bool operator>(const T0 &other) const{}
01915 
01917 
01920     bool operator>=(const T0 &other) const{}
01921 
01923 
01926     bool operator<(const T1 &other) const{}
01927 
01929 
01932     bool operator<=(const T1 &other) const{}
01933 
01935 
01938     bool operator>(const T1 &other) const{}
01939 
01941 
01944     bool operator>=(const T1 &other) const{}
01945 
01947 
01951     T1 operator+(difference_type off) const{}
01952 
01954 
01958     T1 operator-(difference_type off) const{}
01959 
01961 
01965     T1& operator+=(difference_type off){}
01966 
01968 
01972     T1& operator-=(difference_type off){}
01973 
01975 
01979     difference_type operator-(const T0 &other) const{}
01980 
01982 
01986     difference_type operator-(const T1 &other) const{}
01987 
01989 
01995     int refresh(){}
01996 
01998 
02002     value_type& operator[](difference_type off) const{}
02003 
02005 
02008     size_type getIndex() const{}
02009 
02010   };
02011 
02012 
02014 
02018   MultiAutoKeyedSSkipList(){}
02019 
02021 
02027   explicit MultiAutoKeyedSSkipList(size_type maxNodes){}
02028 
02030 
02034   MultiAutoKeyedSSkipList(double probability, unsigned int maxLevel){}
02035 
02037 
02042   MultiAutoKeyedSSkipList(const container_type &source){}
02043 
02045 
02052   template<class InIt> MultiAutoKeyedSSkipList(InIt first, InIt last){}
02053 
02055 
02061   template<class InIt> MultiAutoKeyedSSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
02062 
02064 
02072   template<class InIt> MultiAutoKeyedSSkipList(InIt first, InIt last, size_type maxNodes){}
02073 
02075 
02081   explicit MultiAutoKeyedSSkipList(const key_compare& comp){}
02082 
02084 
02092   template<class InIt> MultiAutoKeyedSSkipList(InIt first, InIt last, const key_compare& comp){}
02093 
02095 
02102   template<class InIt> MultiAutoKeyedSSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
02103 
02105 
02114   template<class InIt> MultiAutoKeyedSSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
02115 
02117 
02120   ~MultiAutoKeyedSSkipList(){}
02121 
02122 
02124 
02130   container_type& operator=(const container_type &source){}
02131 
02133 
02136   iterator begin(){}
02137 
02139 
02142   iterator end(){}
02143 
02145 
02148   const_iterator begin() const{}
02149 
02151 
02154   const_iterator end() const{}
02155 
02157 
02160   reverse_iterator rbegin(){}
02161 
02163 
02166   reverse_iterator rend(){}
02167 
02169 
02172   const_reverse_iterator rbegin() const{}
02173 
02175 
02178   const_reverse_iterator rend() const{}
02179 
02181 
02184   size_type size() const{}
02185 
02187 
02190   bool empty() const{}
02191 
02193 
02196   reference front(){}
02197 
02199 
02202   const_reference front() const{}
02203 
02205 
02208   reference back(){}
02209 
02211 
02214   const_reference back() const{}
02215 
02217   void pop_front(){}
02218 
02220   void destroy_front(){}
02221 
02223   void pop_back(){}
02224 
02226   void destroy_back(){}
02227 
02229 
02233   template<class InIt> void assign(InIt first, InIt last){}
02234 
02236 
02240   iterator insert(const value_type& val){}
02241 
02243 
02249   iterator insert(const iterator &where, const value_type& val) {}
02250 
02252 
02256   template<class InIt> void insert(InIt first, InIt last) {}
02257 
02259   void clear(){}
02260 
02262   void destroy(){}
02263 
02265   iterator erase(const iterator &where){}
02266 
02268   iterator destroy(const iterator &where){}
02269 
02271 
02278   iterator erase(const iterator &first, const iterator &last){}
02279 
02281 
02288   iterator destroy(const iterator &first, const iterator &last){}
02289 
02291 
02295   size_type erase(const key_type &keyval){}
02296 
02298 
02302   size_type destroy(const key_type &keyval){}
02303 
02305 
02309   iterator erase_index(size_type index);
02310 
02312 
02316   iterator destroy_index(size_type index);
02317 
02319 
02322   void swap(container_type& right) {}
02323 
02325 
02328   template<class Pr1> void erase_if(Pr1 pred);
02329 
02331 
02334   template<class Pr4> void destroy_if(Pr4 pred);
02335 
02337 
02348   void cut(const iterator &first, const iterator &last, container_type& right);
02349 
02351 
02357   mapped_type_reference operator[](size_type index){}
02358 
02360 
02366   const_mapped_type_reference operator[](size_type index) const{}
02367 
02369 
02375   mapped_type_reference at(size_type off){}
02376 
02378 
02384   const_mapped_type_reference at(size_type off) const{}
02385 
02387   key_compare key_comp() const { }
02388 
02390   value_compare value_comp() const { }
02391 
02393   size_type max_size() const{}
02394 
02396 
02402   const key_type& key(const value_type& value) const {}
02403 
02405 
02411   mapped_type& value(value_type& value) {}
02412 
02414 
02418   iterator find(const key_type& keyval) {}
02419 
02421 
02425   const_iterator find(const key_type& keyval) const {}
02426 
02428 
02432   size_type count(const key_type& keyval) const {}
02433 
02434 
02436 
02440   iterator lower_bound(const key_type& keyval) {}
02441 
02443 
02447   const_iterator lower_bound(const key_type& keyval) const {}
02448 
02450 
02454   iterator upper_bound(const key_type& keyval) {}
02455 
02457 
02461   const_iterator upper_bound(const key_type& keyval) const {}
02462 
02464 
02468   ipair equal_range(const key_type& keyval) {}
02469 
02471 
02475   const_ipair equal_range(const key_type& keyval) const {}
02476 };
02477 
02479 
02484 template <class K, class T, class Pr, class R>
02485 bool operator==(const MultiAutoKeyedSSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSSkipList<K,T,Pr,R> &right)
02486 {
02487   return ((left.size() == right.size()) &&
02488           (std::equal(left.begin(), left.end(), right.begin())));
02489 }
02490 
02492 
02497 template <class K, class T, class Pr, class R>
02498 bool operator!=(const MultiAutoKeyedSSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSSkipList<K,T,Pr,R> &right)
02499 {
02500   return !(left==right);
02501 }
02502 
02504 
02509 template <class K, class T, class Pr, class R>
02510 bool operator<(const MultiAutoKeyedSSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSSkipList<K,T,Pr,R> &right)
02511 {
02512   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
02513 }
02514 
02516 
02521 template <class K, class T, class Pr, class R>
02522 bool operator<=(const MultiAutoKeyedSSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSSkipList<K,T,Pr,R> &right)
02523 {
02524   return !(right < left);
02525 }
02526 
02528 
02533 template <class K, class T, class Pr, class R>
02534 bool operator>(const MultiAutoKeyedSSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSSkipList<K,T,Pr,R> &right)
02535 {
02536   return (right < left);
02537 }
02538 
02540 
02545 template <class K, class T, class Pr, class R>
02546 bool operator>=(const MultiAutoKeyedSSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSSkipList<K,T,Pr,R> &right)
02547 {
02548   return !(left < right);
02549 }
02550 
02551 
02552 /*#define csarg1 template <class T, class Pr, class R>
02553 #define csarg2 MultiAutoKeyedSSkipList<K,T,Pr,R>
02554 CSDefineCompOps(csarg1, csarg2)
02555 #undef csarg1
02556 #undef csarg2
02557 */
 All Classes Files Functions Variables Typedefs