CSAutoSSkipList.h

Go to the documentation of this file.
00001 
00009 
00010 
00065 template <class T, class Pr = std::less<T>, class R = RNG >
00066 class AutoSSkipList
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 T value_type;
00083   typedef ForwardIdxNode<value_type> node_type;
00085   typedef AutoSSkipList<T,Pr,R> container_type;
00087   typedef T key_type;
00089 
00094   typedef T0 iterator;
00096   typedef T* pointer;
00098   typedef T& reference;
00100   typedef T mapped_type;
00102   typedef T& mapped_type_reference;
00104   typedef const T const_mapped_type;
00106   typedef const T& const_mapped_type_reference;
00108   typedef const T& const_reference;
00110   typedef T1 const_iterator;
00112 
00115   typedef std::reverse_iterator<iterator> reverse_iterator;
00117   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
00119   typedef std::pair<iterator, bool> slpair;
00121   typedef std::pair<iterator, iterator> ipair;
00123   typedef std::pair<const_iterator, const_iterator> const_ipair;
00125   typedef Pr key_compare;
00127   typedef Pr value_compare;
00128 
00129 private:
00130   R rng; 
00131   Pr Compare; 
00132   unsigned int maxLevel; 
00133   unsigned int level;    
00134   node_type *head;  
00135   node_type *tail; 
00136   double probability; 
00137   size_type items; 
00138   mutable size_type scan_index; 
00139   mutable std::pair<size_type,node_type*> *update; 
00140 
00142 
00146   void Init(double probability,unsigned int maxLevel) {}
00147 
00149 
00154   node_type* Alloc(unsigned int level, const T &obj) {}
00155 
00157 
00161   node_type* Alloc(unsigned int level) {}
00162 
00164 
00167   void Free(node_type *item) {}
00168 
00170 
00173   unsigned int GenerateRandomLevel() const {}
00174 
00176   void adjust_levels() {}
00177 
00179 
00185   void scan(const value_type &val) const{}
00186 
00188 
00194   void scan(size_type index) const{}
00195 
00197 
00203   void scan(const node_type *nodex) const{}
00204 
00206 
00213   void scan(const iterator &where) const{}
00214 public:
00215 
00217 
00220   class T0 : public std::iterator<std::random_access_iterator_tag, value_type>
00221   {
00222   public:
00223     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00224     typedef std::random_acces_iterator_tag iterator_category;
00225     typedef typename baseclass::value_type value_type;
00226     typedef typename baseclass::value_type* pointer;
00227     typedef typename baseclass::value_type& reference;
00228     typedef ptrdiff_t difference_type;
00229 
00230     friend T1;
00231     friend container_type;
00232   private:
00233     container_type *container; 
00234     mutable size_type Findex; 
00235     node_type* node; 
00236   public:
00238     T0() {}
00239 
00241 
00244     T0(const T0 &t0){}
00245 
00247 
00250     T0(const T1 &t1){}
00251 
00253 
00259     T0(container_type *container, node_type* p){}
00260 
00262 
00267     T0(container_type *container, node_type* p, size_type index){}
00268 
00270 
00273     bool operator==(const T0& other) const{}
00274 
00276 
00279     bool operator!=(const T0& other) const{}
00280 
00282 
00285     bool operator==(const T1& other) const{}
00286 
00288 
00291     bool operator!=(const T1& other) const{}
00292 
00294 
00299     T0& operator++(){}
00300 
00302 
00307     T0 operator++(int){}
00308 
00310 
00315     T0& operator--(){}
00316 
00318 
00323     T0 operator--(int){}
00324 
00326 
00331     value_type& operator*() const{}
00332 
00334 
00339     value_type* operator->() const{}
00340 
00342 
00345     bool operator<(const T0 &other) const{}
00346 
00348 
00351     bool operator<=(const T0 &other) const{}
00352 
00354 
00357     bool operator>(const T0 &other) const{}
00358 
00360 
00363     bool operator>=(const T0 &other) const{}
00364 
00366 
00369     bool operator<(const T1 &other) const{}
00370 
00372 
00375     bool operator<=(const T1 &other) const{}
00376 
00378 
00381     bool operator>(const T1 &other) const{}
00382 
00384 
00387     bool operator>=(const T1 &other) const{}
00388 
00390 
00394     T0 operator+(difference_type off) const{}
00395 
00397 
00401     T0 operator-(difference_type off) const{}
00402 
00404 
00408     T0& operator+=(difference_type off){}
00409 
00411 
00415     T0& operator-=(difference_type off){}
00416 
00418 
00422     difference_type operator-(const T0 &other) const{}
00423 
00425 
00429     difference_type operator-(const T1 &other) const{}
00430 
00432 
00438     int refresh(){}
00439 
00441 
00445     value_type& operator[](difference_type off) const{}
00446 
00448 
00451     size_type getIndex() const{}
00452   };
00453 
00455 
00458   class T1 : public std::iterator<std::random_access_iterator_tag, value_type>
00459   {
00460   public:
00461     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00462     typedef std::random_acces_iterator_tag iterator_category;
00463     typedef typename baseclass::value_type value_type;
00464     typedef typename const baseclass::value_type* pointer;
00465     typedef typename const baseclass::value_type& reference;
00466     typedef ptrdiff_t difference_type;
00467 
00468     friend T0;
00469     friend container_type;
00470   private:
00471     const container_type *container; 
00472     mutable size_type Findex; 
00473     const node_type* node; 
00474   public:
00476     T1() {}
00477 
00479 
00482     T1(const T1 &t1){}
00483 
00485 
00488     T1(const T0 &t0){}
00489 
00491 
00497     T1(container_type *container, node_type* p){}
00498 
00500 
00505     T1(container_type *container, node_type* p, size_type index){}
00506 
00508 
00511     bool operator==(const T0& other) const{}
00512 
00514 
00517     bool operator!=(const T0& other) const{}
00518 
00520 
00523     bool operator==(const T1& other) const{}
00524 
00526 
00529     bool operator!=(const T1& other) const{}
00530 
00532 
00537     T1& operator++(){}
00538 
00540 
00545     T1 operator++(int){}
00546 
00548 
00553     T1& operator--(){}
00554 
00556 
00561     T1 operator--(int){}
00562 
00564 
00569     value_type& operator*() const{}
00570 
00572 
00577     value_type* operator->() const{}
00578 
00580 
00583     bool operator<(const T0 &other) const{}
00584 
00586 
00589     bool operator<=(const T0 &other) const{}
00590 
00592 
00595     bool operator>(const T0 &other) const{}
00596 
00598 
00601     bool operator>=(const T0 &other) const{}
00602 
00604 
00607     bool operator<(const T1 &other) const{}
00608 
00610 
00613     bool operator<=(const T1 &other) const{}
00614 
00616 
00619     bool operator>(const T1 &other) const{}
00620 
00622 
00625     bool operator>=(const T1 &other) const{}
00626 
00628 
00632     T1 operator+(difference_type off) const{}
00633 
00635 
00639     T1 operator-(difference_type off) const{}
00640 
00642 
00646     T1& operator+=(difference_type off){}
00647 
00649 
00653     T1& operator-=(difference_type off){}
00654 
00656 
00660     difference_type operator-(const T0 &other) const{}
00661 
00663 
00667     difference_type operator-(const T1 &other) const{}
00668 
00670 
00676     int refresh(){}
00677 
00679 
00683     value_type& operator[](difference_type off) const{}
00684 
00686 
00689     size_type getIndex() const{}
00690 
00691   };
00692 
00694 
00698   AutoSSkipList(){}
00699 
00701 
00707   explicit AutoSSkipList(size_type maxNodes){}
00708 
00710 
00714   AutoSSkipList(double probability, unsigned int maxLevel){}
00715 
00717 
00722   AutoSSkipList(const container_type &source){}
00723 
00725 
00732   template<class InIt> AutoSSkipList(InIt first, InIt last){}
00733 
00735 
00741   template<class InIt> AutoSSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
00742 
00744 
00752   template<class InIt> AutoSSkipList(InIt first, InIt last, size_type maxNodes){}
00753 
00755 
00761   explicit AutoSSkipList(const key_compare& comp){}
00762 
00764 
00772   template<class InIt> AutoSSkipList(InIt first, InIt last, const key_compare& comp){}
00773 
00775 
00782   template<class InIt> AutoSSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
00783 
00785 
00794   template<class InIt> AutoSSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
00795 
00797 
00800   ~AutoSSkipList(){}
00801 
00802 
00804 
00810   container_type& operator=(const container_type &source){}
00811 
00813 
00816   iterator begin(){}
00817 
00819 
00822   iterator end(){}
00823 
00825 
00828   const_iterator begin() const{}
00829 
00831 
00834   const_iterator end() const{}
00835 
00837 
00840   reverse_iterator rbegin(){}
00841 
00843 
00846   reverse_iterator rend(){}
00847 
00849 
00852   const_reverse_iterator rbegin() const{}
00853 
00855 
00858   const_reverse_iterator rend() const{}
00859 
00861 
00864   size_type size() const{}
00865 
00867 
00870   bool empty() const{}
00871 
00873 
00876   reference front(){}
00877 
00879 
00882   const_reference front() const{}
00883 
00885 
00888   reference back(){}
00889 
00891 
00894   const_reference back() const{}
00895 
00897   void pop_front(){}
00898 
00900   void destroy_front(){}
00901 
00903   void pop_back(){}
00904 
00906   void destroy_back(){}
00907 
00909 
00913   template<class InIt> void assign(InIt first, InIt last){}
00914 
00916 
00926   slpair insert(const value_type& val){}
00927 
00929 
00935   iterator insert(const iterator &where, const value_type& val) {}
00936 
00938 
00942   template<class InIt> void insert(InIt first, InIt last) {}
00943 
00945   void clear(){}
00946 
00948   void destroy(){}
00949 
00951   iterator erase(const iterator &where){}
00952 
00954   iterator destroy(const iterator &where){}
00955 
00957 
00964   iterator erase(const iterator &first, const iterator &last){}
00965 
00967 
00974   iterator destroy(const iterator &first, const iterator &last){}
00975 
00977 
00981   size_type erase(const key_type &keyval){}
00982 
00984 
00988   size_type destroy(const key_type &keyval){}
00989 
00991 
00995   iterator erase_index(size_type index);
00996 
00998 
01002   iterator destroy_index(size_type index);
01003 
01005 
01008   void swap(container_type& right) {}
01009 
01011 
01014   template<class Pr1> void erase_if(Pr1 pred);
01015 
01017 
01020   template<class Pr4> void destroy_if(Pr4 pred);
01021 
01023 
01034   void cut(const iterator &first, const iterator &last, container_type& right);
01035 
01037 
01043   mapped_type_reference operator[](size_type index){}
01044 
01046 
01052   const_mapped_type_reference operator[](size_type index) const{}
01053 
01055 
01061   mapped_type_reference at(size_type off){}
01062 
01064 
01070   const_mapped_type_reference at(size_type off) const{}
01071 
01073   key_compare key_comp() const { }
01074 
01076   value_compare value_comp() const { }
01077 
01079   size_type max_size() const{}
01080 
01082 
01088   const key_type& key(const value_type& value) const {}
01089 
01091 
01097   mapped_type& value(value_type& value) {}
01098 
01100 
01104   iterator find(const key_type& keyval) {}
01105 
01107 
01111   const_iterator find(const key_type& keyval) const {}
01112 
01114 
01118   size_type count(const key_type& keyval) const {}
01119 
01120 
01122 
01126   iterator lower_bound(const key_type& keyval) {}
01127 
01129 
01133   const_iterator lower_bound(const key_type& keyval) const {}
01134 
01136 
01140   iterator upper_bound(const key_type& keyval) {}
01141 
01143 
01147   const_iterator upper_bound(const key_type& keyval) const {}
01148 
01150 
01154   ipair equal_range(const key_type& keyval) {}
01155 
01157 
01161   const_ipair equal_range(const key_type& keyval) const {}
01162 };
01163 
01165 
01170 template <class T, class Pr, class R>
01171 bool operator==(const AutoSSkipList<T,Pr,R> &left, const AutoSSkipList<T,Pr,R> &right)
01172 {
01173   return ((left.size() == right.size()) &&
01174           (std::equal(left.begin(), left.end(), right.begin())));
01175 
01176 }
01177 
01179 
01184 template <class T, class Pr, class R>
01185 bool operator!=(const AutoSSkipList<T,Pr,R> &left, const AutoSSkipList<T,Pr,R> &right)
01186 {
01187   return !(left==right);
01188 }
01189 
01191 
01196 template <class T, class Pr, class R>
01197 bool operator<(const AutoSSkipList<T,Pr,R> &left, const AutoSSkipList<T,Pr,R> &right)
01198 {
01199   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
01200 }
01201 
01203 
01208 template <class T, class Pr, class R>
01209 bool operator<=(const AutoSSkipList<T,Pr,R> &left, const AutoSSkipList<T,Pr,R> &right)
01210 {
01211   return !(right < left);
01212 }
01213 
01215 
01220 template <class T, class Pr, class R>
01221 bool operator>(const AutoSSkipList<T,Pr,R> &left, const AutoSSkipList<T,Pr,R> &right)
01222 {
01223   return (right < left);
01224 }
01225 
01227 
01232 template <class T, class Pr, class R>
01233 bool operator>=(const AutoSSkipList<T,Pr,R> &left, const AutoSSkipList<T,Pr,R> &right)
01234 {
01235   return !(left < right);
01236 }
01237 
01238 /*#define csarg1 template <class T, class Pr, class R>
01239 #define csarg2 AutoSSkipList<T,Pr,R>
01240 CSDefineCompOps(csarg1, csarg2)
01241 #undef csarg1
01242 #undef csarg2
01243 
01244 #undef CSUNIQUE
01245 #define CSUNIQUE(a,b) b
01246 */
01247 
01249 
01304 template <class T, class Pr = std::less<T>, class R = RNG >
01305 class MultiAutoSSkipList
01306 {
01307 public:
01308   class T0;
01309   class T1;
01310   friend class T0;
01311   friend class T1;
01313   typedef size_t size_type;
01315 
01318   typedef ptrdiff_t difference_type;
01320   typedef T value_type;
01322   typedef ForwardIdxNode<value_type> node_type;
01324   typedef MultiAutoSSkipList<T,Pr,R> container_type;
01326   typedef T key_type;
01328 
01333   typedef T0 iterator;
01335   typedef T* pointer;
01337   typedef T& reference;
01339   typedef T mapped_type;
01341   typedef T& mapped_type_reference;
01343   typedef const T const_mapped_type;
01345   typedef const T& const_mapped_type_reference;
01347   typedef const T& const_reference;
01349   typedef T1 const_iterator;
01351 
01354   typedef std::reverse_iterator<iterator> reverse_iterator;
01356   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
01358   typedef std::pair<iterator, iterator> ipair;
01360   typedef std::pair<const_iterator, const_iterator> const_ipair;
01362   typedef Pr key_compare;
01364   typedef Pr value_compare;
01365 
01366 private:
01367   R rng; 
01368   Pr Compare; 
01369   unsigned int maxLevel; 
01370   unsigned int level;    
01371   node_type *head;  
01372   node_type *tail; 
01373   double probability; 
01374   size_type items; 
01375   mutable size_type scan_index; 
01376   mutable std::pair<size_type,node_type*> *update; 
01377 
01379 
01383   void Init(double probability, unsigned int maxLevel) {}
01384 
01386 
01391   node_type* Alloc(unsigned int level, const T &obj) {}
01392 
01394 
01398   node_type* Alloc(unsigned int level) {}
01399 
01401 
01404   void Free(node_type *item) {}
01405 
01407 
01410   unsigned int GenerateRandomLevel() const {}
01411 
01413   void adjust_levels() {}
01414 
01416 
01422   void scan(const value_type &val) const{}
01423 
01425 
01431   void scan(size_type index) const{}
01432 
01434 
01440   void scan(const node_type *nodex) const{}
01441 
01443 
01450   void scan(const iterator &where) const{}
01451 
01452 public:
01454 
01457   class T0 : public std::iterator<std::random_access_iterator_tag, value_type>
01458   {
01459   public:
01460     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01461     typedef std::random_acces_iterator_tag iterator_category;
01462     typedef typename baseclass::value_type value_type;
01463     typedef typename baseclass::value_type* pointer;
01464     typedef typename baseclass::value_type& reference;
01465     typedef ptrdiff_t difference_type;
01466 
01467     friend T1;
01468     friend container_type;
01469   private:
01470     container_type *container; 
01471     mutable size_type Findex; 
01472     node_type* node; 
01473   public:
01475     T0() {}
01476 
01478 
01481     T0(const T0 &t0){}
01482 
01484 
01487     T0(const T1 &t1){}
01488 
01490 
01496     T0(container_type *container, node_type* p){}
01497 
01499 
01504     T0(container_type *container, node_type* p, size_type index){}
01505 
01507 
01510     bool operator==(const T0& other) const{}
01511 
01513 
01516     bool operator!=(const T0& other) const{}
01517 
01519 
01522     bool operator==(const T1& other) const{}
01523 
01525 
01528     bool operator!=(const T1& other) const{}
01529 
01531 
01536     T0& operator++(){}
01537 
01539 
01544     T0 operator++(int){}
01545 
01547 
01552     T0& operator--(){}
01553 
01555 
01560     T0 operator--(int){}
01561 
01563 
01568     value_type& operator*() const{}
01569 
01571 
01576     value_type* operator->() const{}
01577 
01579 
01582     bool operator<(const T0 &other) const{}
01583 
01585 
01588     bool operator<=(const T0 &other) const{}
01589 
01591 
01594     bool operator>(const T0 &other) const{}
01595 
01597 
01600     bool operator>=(const T0 &other) const{}
01601 
01603 
01606     bool operator<(const T1 &other) const{}
01607 
01609 
01612     bool operator<=(const T1 &other) const{}
01613 
01615 
01618     bool operator>(const T1 &other) const{}
01619 
01621 
01624     bool operator>=(const T1 &other) const{}
01625 
01627 
01631     T0 operator+(difference_type off) const{}
01632 
01634 
01638     T0 operator-(difference_type off) const{}
01639 
01641 
01645     T0& operator+=(difference_type off){}
01646 
01648 
01652     T0& operator-=(difference_type off){}
01653 
01655 
01659     difference_type operator-(const T0 &other) const{}
01660 
01662 
01666     difference_type operator-(const T1 &other) const{}
01667 
01669 
01675     int refresh(){}
01676 
01678 
01682     value_type& operator[](difference_type off) const{}
01683 
01685 
01688     size_type getIndex() const{}
01689   };
01690 
01692 
01695   class T1 : public std::iterator<std::random_access_iterator_tag, value_type>
01696   {
01697   public:
01698     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01699     typedef std::random_acces_iterator_tag iterator_category;
01700     typedef typename baseclass::value_type value_type;
01701     typedef typename const baseclass::value_type* pointer;
01702     typedef typename const baseclass::value_type& reference;
01703     typedef ptrdiff_t difference_type;
01704 
01705     friend T0;
01706     friend container_type;
01707   private:
01708     const container_type *container; 
01709     mutable size_type Findex; 
01710     const node_type* node; 
01711   public:
01713     T1() {}
01714 
01716 
01719     T1(const T1 &t1){}
01720 
01722 
01725     T1(const T0 &t0){}
01726 
01728 
01734     T1(container_type *container, node_type* p){}
01735 
01737 
01742     T1(container_type *container, node_type* p, size_type index){}
01743 
01745 
01748     bool operator==(const T0& other) const{}
01749 
01751 
01754     bool operator!=(const T0& other) const{}
01755 
01757 
01760     bool operator==(const T1& other) const{}
01761 
01763 
01766     bool operator!=(const T1& other) const{}
01767 
01769 
01774     T1& operator++(){}
01775 
01777 
01782     T1 operator++(int){}
01783 
01785 
01790     T1& operator--(){}
01791 
01793 
01798     T1 operator--(int){}
01799 
01801 
01806     value_type& operator*() const{}
01807 
01809 
01814     value_type* operator->() const{}
01815 
01817 
01820     bool operator<(const T0 &other) const{}
01821 
01823 
01826     bool operator<=(const T0 &other) const{}
01827 
01829 
01832     bool operator>(const T0 &other) const{}
01833 
01835 
01838     bool operator>=(const T0 &other) const{}
01839 
01841 
01844     bool operator<(const T1 &other) const{}
01845 
01847 
01850     bool operator<=(const T1 &other) const{}
01851 
01853 
01856     bool operator>(const T1 &other) const{}
01857 
01859 
01862     bool operator>=(const T1 &other) const{}
01863 
01865 
01869     T1 operator+(difference_type off) const{}
01870 
01872 
01876     T1 operator-(difference_type off) const{}
01877 
01879 
01883     T1& operator+=(difference_type off){}
01884 
01886 
01890     T1& operator-=(difference_type off){}
01891 
01893 
01897     difference_type operator-(const T0 &other) const{}
01898 
01900 
01904     difference_type operator-(const T1 &other) const{}
01905 
01907 
01913     int refresh(){}
01914 
01916 
01920     value_type& operator[](difference_type off) const{}
01921 
01923 
01926     size_type getIndex() const{}
01927 
01928   };
01929 
01930 
01932 
01936   MultiAutoSSkipList(){}
01937 
01939 
01945   explicit MultiAutoSSkipList(size_type maxNodes){}
01946 
01948 
01952   MultiAutoSSkipList(double probability, unsigned int maxLevel){}
01953 
01955 
01960   MultiAutoSSkipList(const container_type &source){}
01961 
01963 
01970   template<class InIt> MultiAutoSSkipList(InIt first, InIt last){}
01971 
01973 
01979   template<class InIt> MultiAutoSSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
01980 
01982 
01990   template<class InIt> MultiAutoSSkipList(InIt first, InIt last, size_type maxNodes){}
01991 
01993 
01999   explicit MultiAutoSSkipList(const key_compare& comp){}
02000 
02002 
02010   template<class InIt> MultiAutoSSkipList(InIt first, InIt last, const key_compare& comp){}
02011 
02013 
02020   template<class InIt> MultiAutoSSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
02021 
02023 
02032   template<class InIt> MultiAutoSSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
02033 
02035 
02038   ~MultiAutoSSkipList(){}
02039 
02040 
02042 
02048   container_type& operator=(const container_type &source){}
02049 
02051 
02054   iterator begin(){}
02055 
02057 
02060   iterator end(){}
02061 
02063 
02066   const_iterator begin() const{}
02067 
02069 
02072   const_iterator end() const{}
02073 
02075 
02078   reverse_iterator rbegin(){}
02079 
02081 
02084   reverse_iterator rend(){}
02085 
02087 
02090   const_reverse_iterator rbegin() const{}
02091 
02093 
02096   const_reverse_iterator rend() const{}
02097 
02099 
02102   size_type size() const{}
02103 
02105 
02108   bool empty() const{}
02109 
02111 
02114   reference front(){}
02115 
02117 
02120   const_reference front() const{}
02121 
02123 
02126   reference back(){}
02127 
02129 
02132   const_reference back() const{}
02133 
02135   void pop_front(){}
02136 
02138   void destroy_front(){}
02139 
02141   void pop_back(){}
02142 
02144   void destroy_back(){}
02145 
02147 
02151   template<class InIt> void assign(InIt first, InIt last){}
02152 
02154 
02158   iterator insert(const value_type& val){}
02159 
02161 
02167   iterator insert(const iterator &where, const value_type& val) {}
02168 
02170 
02174   template<class InIt> void insert(InIt first, InIt last) {}
02175 
02177   void clear(){}
02178 
02180   void destroy(){}
02181 
02183   iterator erase(const iterator &where){}
02184 
02186   iterator destroy(const iterator &where){}
02187 
02189 
02196   iterator erase(const iterator &first, const iterator &last){}
02197 
02199 
02206   iterator destroy(const iterator &first, const iterator &last){}
02207 
02209 
02213   size_type erase(const key_type &keyval){}
02214 
02216 
02220   size_type destroy(const key_type &keyval){}
02221 
02223 
02227   iterator erase_index(size_type index);
02228 
02230 
02234   iterator destroy_index(size_type index);
02235 
02237 
02240   void swap(container_type& right) {}
02241 
02243 
02246   template<class Pr1> void erase_if(Pr1 pred);
02247 
02249 
02252   template<class Pr4> void destroy_if(Pr4 pred);
02253 
02255 
02266   void cut(const iterator &first, const iterator &last, container_type& right);
02267 
02269 
02275   mapped_type_reference operator[](size_type index){}
02276 
02278 
02284   const_mapped_type_reference operator[](size_type index) const{}
02285 
02287 
02293   mapped_type_reference at(size_type off){}
02294 
02296 
02302   const_mapped_type_reference at(size_type off) const{}
02303 
02305   key_compare key_comp() const { }
02306 
02308   value_compare value_comp() const { }
02309 
02311   size_type max_size() const{}
02312 
02314 
02320   const key_type& key(const value_type& value) const {}
02321 
02323 
02329   mapped_type& value(value_type& value) {}
02330 
02332 
02336   iterator find(const key_type& keyval) {}
02337 
02339 
02343   const_iterator find(const key_type& keyval) const {}
02344 
02346 
02350   size_type count(const key_type& keyval) const {}
02351 
02352 
02354 
02358   iterator lower_bound(const key_type& keyval) {}
02359 
02361 
02365   const_iterator lower_bound(const key_type& keyval) const {}
02366 
02368 
02372   iterator upper_bound(const key_type& keyval) {}
02373 
02375 
02379   const_iterator upper_bound(const key_type& keyval) const {}
02380 
02382 
02386   ipair equal_range(const key_type& keyval) {}
02387 
02389 
02393   const_ipair equal_range(const key_type& keyval) const {}
02394 };
02395 
02397 
02402 template <class T, class Pr, class R>
02403 bool operator==(const MultiAutoSSkipList<T,Pr,R> &left, const MultiAutoSSkipList<T,Pr,R> &right)
02404 {
02405   return ((left.size() == right.size()) &&
02406           (std::equal(left.begin(), left.end(), right.begin())));
02407 }
02408 
02410 
02415 template <class T, class Pr, class R>
02416 bool operator!=(const MultiAutoSSkipList<T,Pr,R> &left, const MultiAutoSSkipList<T,Pr,R> &right)
02417 {
02418   return !(left==right);
02419 }
02420 
02422 
02427 template <class T, class Pr, class R>
02428 bool operator<(const MultiAutoSSkipList<T,Pr,R> &left, const MultiAutoSSkipList<T,Pr,R> &right)
02429 {
02430   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
02431 }
02432 
02434 
02439 template <class T, class Pr, class R>
02440 bool operator<=(const MultiAutoSSkipList<T,Pr,R> &left, const MultiAutoSSkipList<T,Pr,R> &right)
02441 {
02442   return !(right < left);
02443 }
02444 
02446 
02451 template <class T, class Pr, class R>
02452 bool operator>(const MultiAutoSSkipList<T,Pr,R> &left, const MultiAutoSSkipList<T,Pr,R> &right)
02453 {
02454   return (right < left);
02455 }
02456 
02458 
02463 template <class T, class Pr, class R>
02464 bool operator>=(const MultiAutoSSkipList<T,Pr,R> &left, const MultiAutoSSkipList<T,Pr,R> &right)
02465 {
02466   return !(left < right);
02467 }
02468 
02469 
02470 /*#define csarg1 template <class T, class Pr, class R>
02471 #define csarg2 MultiAutoSSkipList<T,Pr,R>
02472 CSDefineCompOps(csarg1, csarg2)
02473 #undef csarg1
02474 #undef csarg2
02475 */
 All Classes Files Functions Variables Typedefs