CSAutoKeyedSkipList.h

Go to the documentation of this file.
00001 
00009 
00010 
00057 template <class K, class T, class Pr = std::less<K>, class R = RNG >
00058 class AutoKeyedSkipList
00059 {
00060 public:
00061   class T0;
00062   class T1;
00063   friend class T0;
00064   friend class T1;
00066   typedef size_t size_type;
00068 
00071   typedef ptrdiff_t difference_type;
00073   typedef AutoKeyedSkipList<K,T,Pr,R> container_type;
00075   typedef K key_type;
00077   typedef std::pair<const K, T> value_type;
00079   typedef BidiIdxNode<value_type> node_type;
00081 
00086   typedef T0 iterator;
00088   typedef value_type* pointer;
00090   typedef value_type& reference;
00092   typedef T data_type;
00094   typedef T mapped_type;
00096   typedef T& mapped_type_reference;
00098   typedef const T const_mapped_type;
00100   typedef const T& const_mapped_type_reference;
00102   typedef const T& const_reference;
00104   typedef T1 const_iterator;
00106 
00109   typedef std::reverse_iterator<iterator> reverse_iterator;
00111   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
00113   typedef std::pair<iterator, bool> slpair;
00115   typedef std::pair<iterator, iterator> ipair;
00117   typedef std::pair<const_iterator, const_iterator> const_ipair;
00119   typedef Pr key_compare;
00120 
00122   class value_compare
00123     : public std::binary_function<value_type, value_type, bool>
00124   {
00125   friend container_type;
00126   public:
00127     bool operator()(const value_type& left, const value_type& right) const
00128       {return (comp(left.first, right.first)); }
00129   protected:
00130     value_compare(const key_compare &pr) : comp(pr) {}
00131     key_compare comp;
00132   };
00133 
00134 private:
00135   R rng; 
00136   key_compare KeyCompare; 
00137   value_compare ValueCompare; 
00138   unsigned int maxLevel; 
00139   unsigned int level;    
00140   node_type *head;  
00141   node_type *tail; 
00142   double probability; 
00143   size_type items; 
00144   mutable size_type scan_index; 
00145   mutable std::pair<size_type,node_type*> *update; 
00146 
00148 
00152   void Init(double probability,unsigned int maxLevel) {}
00153 
00155 
00160   node_type* Alloc(unsigned int level, const T &obj) {}
00161 
00163 
00167   node_type* Alloc(unsigned int level) {}
00168 
00170 
00173   void Free(node_type *item) {}
00174 
00176 
00179   unsigned int GenerateRandomLevel() const {}
00180 
00182   void adjust_levels() {}
00183 
00185 
00191   void scan(const key_type &val) const{}
00192 
00194 
00200   void scan(const value_type &val) const{}
00201 
00203 
00209   void scan(size_type index) const{}
00210 
00212 
00218   void scan(const node_type *nodex) const{}
00219 
00221 
00228   void scan(const iterator &where) const{}
00229 public:
00230 
00232 
00235   class T0 : public std::iterator<std::random_access_iterator_tag, value_type>
00236   {
00237   public:
00238     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00239     typedef std::random_acces_iterator_tag iterator_category;
00240     typedef typename baseclass::value_type value_type;
00241     typedef typename baseclass::value_type* pointer;
00242     typedef typename baseclass::value_type& reference;
00243     typedef ptrdiff_t difference_type;
00244 
00245     friend T1;
00246     friend container_type;
00247   private:
00248     container_type *container; 
00249     mutable size_type Findex; 
00250     node_type* node; 
00251   public:
00253     T0() {}
00254 
00256 
00259     T0(const T0 &t0){}
00260 
00262 
00265     T0(const T1 &t1){}
00266 
00268 
00274     T0(container_type *container, node_type* p){}
00275 
00277 
00282     T0(container_type *container, node_type* p, size_type index){}
00283 
00285 
00288     bool operator==(const T0& other) const{}
00289 
00291 
00294     bool operator!=(const T0& other) const{}
00295 
00297 
00300     bool operator==(const T1& other) const{}
00301 
00303 
00306     bool operator!=(const T1& other) const{}
00307 
00309 
00314     T0& operator++(){}
00315 
00317 
00322     T0 operator++(int){}
00323 
00325 
00330     T0& operator--(){}
00331 
00333 
00338     T0 operator--(int){}
00339 
00341 
00346     reference operator*() const{}
00347 
00349 
00354     pointer operator->() const{}
00355 
00357 
00360     bool operator<(const T0 &other) const{}
00361 
00363 
00366     bool operator<=(const T0 &other) const{}
00367 
00369 
00372     bool operator>(const T0 &other) const{}
00373 
00375 
00378     bool operator>=(const T0 &other) const{}
00379 
00381 
00384     bool operator<(const T1 &other) const{}
00385 
00387 
00390     bool operator<=(const T1 &other) const{}
00391 
00393 
00396     bool operator>(const T1 &other) const{}
00397 
00399 
00402     bool operator>=(const T1 &other) const{}
00403 
00405 
00409     T0 operator+(difference_type off) const{}
00410 
00412 
00416     T0 operator-(difference_type off) const{}
00417 
00419 
00423     T0& operator+=(difference_type off){}
00424 
00426 
00430     T0& operator-=(difference_type off){}
00431 
00433 
00437     difference_type operator-(const T0 &other) const{}
00438 
00440 
00444     difference_type operator-(const T1 &other) const{}
00445 
00447 
00453     int refresh(){}
00454 
00456 
00460     value_type& operator[](difference_type off) const{}
00461 
00463 
00466     size_type getIndex() const{}
00467   };
00468 
00470 
00473   class T1 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
00474   {
00475   public:
00476     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00477     typedef std::random_acces_iterator_tag iterator_category;
00478     typedef typename baseclass::value_type value_type;
00479     typedef typename const baseclass::value_type* pointer;
00480     typedef typename const baseclass::value_type& reference;
00481     typedef ptrdiff_t difference_type;
00482 
00483     friend T0;
00484     friend container_type;
00485   private:
00486     const container_type *container; 
00487     mutable size_type Findex; 
00488     const node_type* node; 
00489   public:
00491     T1() {}
00492 
00494 
00497     T1(const T1 &t1){}
00498 
00500 
00503     T1(const T0 &t0){}
00504 
00506 
00512     T1(container_type *container, node_type* p){}
00513 
00515 
00520     T1(container_type *container, node_type* p, size_type index){}
00521 
00523 
00526     bool operator==(const T0& other) const{}
00527 
00529 
00532     bool operator!=(const T0& other) const{}
00533 
00535 
00538     bool operator==(const T1& other) const{}
00539 
00541 
00544     bool operator!=(const T1& other) const{}
00545 
00547 
00552     T1& operator++(){}
00553 
00555 
00560     T1 operator++(int){}
00561 
00563 
00568     T1& operator--(){}
00569 
00571 
00576     T1 operator--(int){}
00577 
00579 
00584     reference operator*() const{}
00585 
00587 
00592     pointer operator->() const{}
00593 
00595 
00598     bool operator<(const T0 &other) const{}
00599 
00601 
00604     bool operator<=(const T0 &other) const{}
00605 
00607 
00610     bool operator>(const T0 &other) const{}
00611 
00613 
00616     bool operator>=(const T0 &other) const{}
00617 
00619 
00622     bool operator<(const T1 &other) const{}
00623 
00625 
00628     bool operator<=(const T1 &other) const{}
00629 
00631 
00634     bool operator>(const T1 &other) const{}
00635 
00637 
00640     bool operator>=(const T1 &other) const{}
00641 
00643 
00647     T1 operator+(difference_type off) const{}
00648 
00650 
00654     T1 operator-(difference_type off) const{}
00655 
00657 
00661     T1& operator+=(difference_type off){}
00662 
00664 
00668     T1& operator-=(difference_type off){}
00669 
00671 
00675     difference_type operator-(const T0 &other) const{}
00676 
00678 
00682     difference_type operator-(const T1 &other) const{}
00683 
00685 
00691     int refresh(){}
00692 
00694 
00698     value_type& operator[](difference_type off) const{}
00699 
00701 
00704     size_type getIndex() const{}
00705 
00706   };
00707 
00709 
00713   AutoKeyedSkipList(){}
00714 
00716 
00722   explicit AutoKeyedSkipList(size_type maxNodes){}
00723 
00725 
00729   AutoKeyedSkipList(double probability, unsigned int maxLevel){}
00730 
00732 
00737   AutoKeyedSkipList(const container_type &source){}
00738 
00740 
00747   template<class InIt> AutoKeyedSkipList(InIt first, InIt last){}
00748 
00750 
00756   template<class InIt> AutoKeyedSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
00757 
00759 
00767   template<class InIt> AutoKeyedSkipList(InIt first, InIt last, size_type maxNodes){}
00768 
00770 
00776   explicit AutoKeyedSkipList(const key_compare& comp){}
00777 
00779 
00787   template<class InIt> AutoKeyedSkipList(InIt first, InIt last, const key_compare& comp){}
00788 
00790 
00797   template<class InIt> AutoKeyedSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
00798 
00800 
00809   template<class InIt> AutoKeyedSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
00810 
00812 
00815   ~AutoKeyedSkipList(){}
00816 
00817 
00819 
00825   container_type& operator=(const container_type &source){}
00826 
00828 
00831   iterator begin(){}
00832 
00834 
00837   iterator end(){}
00838 
00840 
00843   const_iterator begin() const{}
00844 
00846 
00849   const_iterator end() const{}
00850 
00852 
00855   reverse_iterator rbegin(){}
00856 
00858 
00861   reverse_iterator rend(){}
00862 
00864 
00867   const_reverse_iterator rbegin() const{}
00868 
00870 
00873   const_reverse_iterator rend() const{}
00874 
00876 
00879   size_type size() const{}
00880 
00882 
00885   bool empty() const{}
00886 
00888 
00891   reference front(){}
00892 
00894 
00897   const_reference front() const{}
00898 
00900 
00903   reference back(){}
00904 
00906 
00909   const_reference back() const{}
00910 
00912   void pop_front(){}
00913 
00915   void destroy_front(){}
00916 
00918   void pop_back(){}
00919 
00921   void destroy_back(){}
00922 
00924 
00928   template<class InIt> void assign(InIt first, InIt last){}
00929 
00931 
00941   slpair insert(const value_type& val){}
00942 
00944 
00950   iterator insert(const iterator &where, const value_type& val) {}
00951 
00953 
00957   template<class InIt> void insert(InIt first, InIt last) {}
00958 
00960   void clear(){}
00961 
00963   void destroy(){}
00964 
00966   iterator erase(const iterator &where){}
00967 
00969   iterator destroy(const iterator &where){}
00970 
00972 
00979   iterator erase(const iterator &first, const iterator &last){}
00980 
00982 
00989   iterator destroy(const iterator &first, const iterator &last){}
00990 
00992 
00996   size_type erase(const key_type &keyval){}
00997 
00999 
01003   size_type destroy(const key_type &keyval){}
01004 
01006 
01010   iterator erase_index(size_type index);
01011 
01013 
01017   iterator destroy_index(size_type index);
01018 
01020 
01023   void swap(container_type& right) {}
01024 
01026 
01029   template<class Pr1> void erase_if(Pr1 pred);
01030 
01032 
01035   template<class Pr4> void destroy_if(Pr4 pred);
01036 
01038 
01049   void cut(const iterator &first, const iterator &last, container_type& right);
01050 
01052 
01058   mapped_type_reference operator[](size_type index){}
01059 
01061 
01067   const_mapped_type_reference operator[](size_type index) const{}
01068 
01070 
01076   mapped_type_reference at(size_type off){}
01077 
01079 
01085   const_mapped_type_reference at(size_type off) const{}
01086 
01088 
01094   mapped_type_reference operator[](const key_type& key){}
01095 
01097 
01103   const_mapped_type_reference operator[](const key_type& key) const{}
01104 
01106 
01112   mapped_type_reference operator()(const key_type& key){}
01113 
01115 
01121   const_mapped_type_reference operator()(const key_type& key) const{}
01122 
01124   key_compare key_comp() const { }
01125 
01127   value_compare value_comp() const { }
01128 
01130   size_type max_size() const{}
01131 
01133 
01139   const key_type& key(const value_type& value) const {}
01140 
01142 
01148   mapped_type& value(value_type& value) {}
01149 
01151 
01155   iterator find(const key_type& keyval) {}
01156 
01158 
01162   const_iterator find(const key_type& keyval) const {}
01163 
01165 
01169   size_type count(const key_type& keyval) const {}
01170 
01171 
01173 
01177   iterator lower_bound(const key_type& keyval) {}
01178 
01180 
01184   const_iterator lower_bound(const key_type& keyval) const {}
01185 
01187 
01191   iterator upper_bound(const key_type& keyval) {}
01192 
01194 
01198   const_iterator upper_bound(const key_type& keyval) const {}
01199 
01201 
01205   ipair equal_range(const key_type& keyval) {}
01206 
01208 
01212   const_ipair equal_range(const key_type& keyval) const {}
01213 };
01214 
01216 
01221 template <class K, class T, class Pr, class R>
01222 bool operator==(const AutoKeyedSkipList<K,T,Pr,R> &left, const AutoKeyedSkipList<K,T,Pr,R> &right)
01223 {
01224   return ((left.size() == right.size()) &&
01225           (std::equal(left.begin(), left.end(), right.begin())));
01226 
01227 }
01228 
01230 
01235 template <class K, class T, class Pr, class R>
01236 bool operator!=(const AutoKeyedSkipList<K,T,Pr,R> &left, const AutoKeyedSkipList<K,T,Pr,R> &right)
01237 {
01238   return !(left==right);
01239 }
01240 
01242 
01247 template <class K, class T, class Pr, class R>
01248 bool operator<(const AutoKeyedSkipList<K,T,Pr,R> &left, const AutoKeyedSkipList<K,T,Pr,R> &right)
01249 {
01250   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
01251 }
01252 
01254 
01259 template <class K, class T, class Pr, class R>
01260 bool operator<=(const AutoKeyedSkipList<K,T,Pr,R> &left, const AutoKeyedSkipList<K,T,Pr,R> &right)
01261 {
01262   return !(right < left);
01263 }
01264 
01266 
01271 template <class K, class T, class Pr, class R>
01272 bool operator>(const AutoKeyedSkipList<K,T,Pr,R> &left, const AutoKeyedSkipList<K,T,Pr,R> &right)
01273 {
01274   return (right < left);
01275 }
01276 
01278 
01283 template <class K, class T, class Pr, class R>
01284 bool operator>=(const AutoKeyedSkipList<K,T,Pr,R> &left, const AutoKeyedSkipList<K,T,Pr,R> &right)
01285 {
01286   return !(left < right);
01287 }
01288 
01289 /*#define csarg1 template <class T, class Pr, class R>
01290 #define csarg2 AutoKeyedSkipList<K,T,Pr,R>
01291 CSDefineCompOps(csarg1, csarg2)
01292 #undef csarg1
01293 #undef csarg2
01294 
01295 #undef CSUNIQUE
01296 #define CSUNIQUE(a,b) b
01297 */
01298 
01300 
01347 template <class K, class T, class Pr = std::less<K>, class R = RNG >
01348 class MultiAutoKeyedSkipList
01349 {
01350 public:
01351   class T0;
01352   class T1;
01353   friend class T0;
01354   friend class T1;
01356   typedef size_t size_type;
01358 
01361   typedef ptrdiff_t difference_type;
01363   typedef MultiAutoKeyedSkipList<K,T,Pr,R> container_type;
01365   typedef K key_type;
01367   typedef std::pair<const K, T> value_type;
01369   typedef BidiIdxNode<value_type> node_type;
01371 
01376   typedef T0 iterator;
01378   typedef value_type* pointer;
01380   typedef value_type& reference;
01382   typedef T data_type;
01384   typedef T mapped_type;
01386   typedef T& mapped_type_reference;
01388   typedef const T const_mapped_type;
01390   typedef const T& const_mapped_type_reference;
01392   typedef const T& const_reference;
01394   typedef T1 const_iterator;
01396 
01399   typedef std::reverse_iterator<iterator> reverse_iterator;
01401   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
01403   typedef std::pair<iterator, iterator> ipair;
01405   typedef std::pair<const_iterator, const_iterator> const_ipair;
01407   typedef Pr key_compare;
01408 
01410   class value_compare
01411     : public std::binary_function<value_type, value_type, bool>
01412   {
01413   friend container_type;
01414   public:
01415     bool operator()(const value_type& left, const value_type& right) const
01416       {return (comp(left.first, right.first)); }
01417   protected:
01418     value_compare(const key_compare &pr) : comp(pr) {}
01419     key_compare comp;
01420   };
01421 
01422 private:
01423   R rng; 
01424   key_compare KeyCompare; 
01425   value_compare ValueCompare; 
01426   unsigned int maxLevel; 
01427   unsigned int level;    
01428   node_type *head;  
01429   node_type *tail; 
01430   double probability; 
01431   size_type items; 
01432   mutable size_type scan_index; 
01433   mutable std::pair<size_type,node_type*> *update; 
01434 
01436 
01440   void Init(double probability,unsigned int maxLevel) {}
01441 
01443 
01448   node_type* Alloc(unsigned int level, const T &obj) {}
01449 
01451 
01455   node_type* Alloc(unsigned int level) {}
01456 
01458 
01461   void Free(node_type *item) {}
01462 
01464 
01467   unsigned int GenerateRandomLevel() const {}
01468 
01470   void adjust_levels() {}
01471 
01473 
01479   void scan(const key_type &val) const{}
01480 
01482 
01488   void scan(const value_type &val) const{}
01489 
01491 
01497   void scan(size_type index) const{}
01498 
01500 
01506   void scan(const node_type *nodex) const{}
01507 
01509 
01516   void scan(const iterator &where) const{}
01517 
01518 public:
01520 
01523   class T0 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
01524   {
01525   public:
01526     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01527     typedef std::random_acces_iterator_tag iterator_category;
01528     typedef typename baseclass::value_type value_type;
01529     typedef typename baseclass::value_type* pointer;
01530     typedef typename baseclass::value_type& reference;
01531     typedef ptrdiff_t difference_type;
01532 
01533     friend T1;
01534     friend container_type;
01535   private:
01536     container_type *container; 
01537     mutable size_type Findex; 
01538     node_type* node; 
01539   public:
01541     T0() {}
01542 
01544 
01547     T0(const T0 &t0){}
01548 
01550 
01553     T0(const T1 &t1){}
01554 
01556 
01562     T0(container_type *container, node_type* p){}
01563 
01565 
01570     T0(container_type *container, node_type* p, size_type index){}
01571 
01573 
01576     bool operator==(const T0& other) const{}
01577 
01579 
01582     bool operator!=(const T0& other) const{}
01583 
01585 
01588     bool operator==(const T1& other) const{}
01589 
01591 
01594     bool operator!=(const T1& other) const{}
01595 
01597 
01602     T0& operator++(){}
01603 
01605 
01610     T0 operator++(int){}
01611 
01613 
01618     T0& operator--(){}
01619 
01621 
01626     T0 operator--(int){}
01627 
01629 
01634     reference operator*() const{}
01635 
01637 
01642     pointer operator->() const{}
01643 
01645 
01648     bool operator<(const T0 &other) const{}
01649 
01651 
01654     bool operator<=(const T0 &other) const{}
01655 
01657 
01660     bool operator>(const T0 &other) const{}
01661 
01663 
01666     bool operator>=(const T0 &other) const{}
01667 
01669 
01672     bool operator<(const T1 &other) const{}
01673 
01675 
01678     bool operator<=(const T1 &other) const{}
01679 
01681 
01684     bool operator>(const T1 &other) const{}
01685 
01687 
01690     bool operator>=(const T1 &other) const{}
01691 
01693 
01697     T0 operator+(difference_type off) const{}
01698 
01700 
01704     T0 operator-(difference_type off) const{}
01705 
01707 
01711     T0& operator+=(difference_type off){}
01712 
01714 
01718     T0& operator-=(difference_type off){}
01719 
01721 
01725     difference_type operator-(const T0 &other) const{}
01726 
01728 
01732     difference_type operator-(const T1 &other) const{}
01733 
01735 
01741     int refresh(){}
01742 
01744 
01748     value_type& operator[](difference_type off) const{}
01749 
01751 
01754     size_type getIndex() const{}
01755   };
01756 
01758 
01761   class T1 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
01762   {
01763   public:
01764     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01765     typedef std::random_acces_iterator_tag iterator_category;
01766     typedef typename baseclass::value_type value_type;
01767     typedef typename const baseclass::value_type* pointer;
01768     typedef typename const baseclass::value_type& reference;
01769     typedef ptrdiff_t difference_type;
01770 
01771     friend T0;
01772     friend container_type;
01773   private:
01774     const container_type *container; 
01775     mutable size_type Findex; 
01776     const node_type* node; 
01777   public:
01779     T1() {}
01780 
01782 
01785     T1(const T1 &t1){}
01786 
01788 
01791     T1(const T0 &t0){}
01792 
01794 
01800     T1(container_type *container, node_type* p){}
01801 
01803 
01808     T1(container_type *container, node_type* p, size_type index){}
01809 
01811 
01814     bool operator==(const T0& other) const{}
01815 
01817 
01820     bool operator!=(const T0& other) const{}
01821 
01823 
01826     bool operator==(const T1& other) const{}
01827 
01829 
01832     bool operator!=(const T1& other) const{}
01833 
01835 
01840     T1& operator++(){}
01841 
01843 
01848     T1 operator++(int){}
01849 
01851 
01856     T1& operator--(){}
01857 
01859 
01864     T1 operator--(int){}
01865 
01867 
01872     reference operator*() const{}
01873 
01875 
01880     pointer operator->() const{}
01881 
01883 
01886     bool operator<(const T0 &other) const{}
01887 
01889 
01892     bool operator<=(const T0 &other) const{}
01893 
01895 
01898     bool operator>(const T0 &other) const{}
01899 
01901 
01904     bool operator>=(const T0 &other) const{}
01905 
01907 
01910     bool operator<(const T1 &other) const{}
01911 
01913 
01916     bool operator<=(const T1 &other) const{}
01917 
01919 
01922     bool operator>(const T1 &other) const{}
01923 
01925 
01928     bool operator>=(const T1 &other) const{}
01929 
01931 
01935     T1 operator+(difference_type off) const{}
01936 
01938 
01942     T1 operator-(difference_type off) const{}
01943 
01945 
01949     T1& operator+=(difference_type off){}
01950 
01952 
01956     T1& operator-=(difference_type off){}
01957 
01959 
01963     difference_type operator-(const T0 &other) const{}
01964 
01966 
01970     difference_type operator-(const T1 &other) const{}
01971 
01973 
01979     int refresh(){}
01980 
01982 
01986     value_type& operator[](difference_type off) const{}
01987 
01989 
01992     size_type getIndex() const{}
01993 
01994   };
01995 
01996 
01998 
02002   MultiAutoKeyedSkipList(){}
02003 
02005 
02011   explicit MultiAutoKeyedSkipList(size_type maxNodes){}
02012 
02014 
02018   MultiAutoKeyedSkipList(double probability, unsigned int maxLevel){}
02019 
02021 
02026   MultiAutoKeyedSkipList(const container_type &source){}
02027 
02029 
02036   template<class InIt> MultiAutoKeyedSkipList(InIt first, InIt last){}
02037 
02039 
02045   template<class InIt> MultiAutoKeyedSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
02046 
02048 
02056   template<class InIt> MultiAutoKeyedSkipList(InIt first, InIt last, size_type maxNodes){}
02057 
02059 
02065   explicit MultiAutoKeyedSkipList(const key_compare& comp){}
02066 
02068 
02076   template<class InIt> MultiAutoKeyedSkipList(InIt first, InIt last, const key_compare& comp){}
02077 
02079 
02086   template<class InIt> MultiAutoKeyedSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
02087 
02089 
02098   template<class InIt> MultiAutoKeyedSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
02099 
02101 
02104   ~MultiAutoKeyedSkipList(){}
02105 
02106 
02108 
02114   container_type& operator=(const container_type &source){}
02115 
02117 
02120   iterator begin(){}
02121 
02123 
02126   iterator end(){}
02127 
02129 
02132   const_iterator begin() const{}
02133 
02135 
02138   const_iterator end() const{}
02139 
02141 
02144   reverse_iterator rbegin(){}
02145 
02147 
02150   reverse_iterator rend(){}
02151 
02153 
02156   const_reverse_iterator rbegin() const{}
02157 
02159 
02162   const_reverse_iterator rend() const{}
02163 
02165 
02168   size_type size() const{}
02169 
02171 
02174   bool empty() const{}
02175 
02177 
02180   reference front(){}
02181 
02183 
02186   const_reference front() const{}
02187 
02189 
02192   reference back(){}
02193 
02195 
02198   const_reference back() const{}
02199 
02201   void pop_front(){}
02202 
02204   void destroy_front(){}
02205 
02207   void pop_back(){}
02208 
02210   void destroy_back(){}
02211 
02213 
02217   template<class InIt> void assign(InIt first, InIt last){}
02218 
02220 
02224   iterator insert(const value_type& val){}
02225 
02227 
02233   iterator insert(const iterator &where, const value_type& val) {}
02234 
02236 
02240   template<class InIt> void insert(InIt first, InIt last) {}
02241 
02243   void clear(){}
02244 
02246   void destroy(){}
02247 
02249   iterator erase(const iterator &where){}
02250 
02252   iterator destroy(const iterator &where){}
02253 
02255 
02262   iterator erase(const iterator &first, const iterator &last){}
02263 
02265 
02272   iterator destroy(const iterator &first, const iterator &last){}
02273 
02275 
02279   size_type erase(const key_type &keyval){}
02280 
02282 
02286   size_type destroy(const key_type &keyval){}
02287 
02289 
02293   iterator erase_index(size_type index);
02294 
02296 
02300   iterator destroy_index(size_type index);
02301 
02303 
02306   void swap(container_type& right) {}
02307 
02309 
02312   template<class Pr1> void erase_if(Pr1 pred);
02313 
02315 
02318   template<class Pr4> void destroy_if(Pr4 pred);
02319 
02321 
02332   void cut(const iterator &first, const iterator &last, container_type& right);
02333 
02335 
02341   mapped_type_reference operator[](size_type index){}
02342 
02344 
02350   const_mapped_type_reference operator[](size_type index) const{}
02351 
02353 
02359   mapped_type_reference at(size_type off){}
02360 
02362 
02368   const_mapped_type_reference at(size_type off) const{}
02369 
02371   key_compare key_comp() const { }
02372 
02374   value_compare value_comp() const { }
02375 
02377   size_type max_size() const{}
02378 
02380 
02386   const key_type& key(const value_type& value) const {}
02387 
02389 
02395   mapped_type& value(value_type& value) {}
02396 
02398 
02402   iterator find(const key_type& keyval) {}
02403 
02405 
02409   const_iterator find(const key_type& keyval) const {}
02410 
02412 
02416   size_type count(const key_type& keyval) const {}
02417 
02418 
02420 
02424   iterator lower_bound(const key_type& keyval) {}
02425 
02427 
02431   const_iterator lower_bound(const key_type& keyval) const {}
02432 
02434 
02438   iterator upper_bound(const key_type& keyval) {}
02439 
02441 
02445   const_iterator upper_bound(const key_type& keyval) const {}
02446 
02448 
02452   ipair equal_range(const key_type& keyval) {}
02453 
02455 
02459   const_ipair equal_range(const key_type& keyval) const {}
02460 };
02461 
02463 
02468 template <class K, class T, class Pr, class R>
02469 bool operator==(const MultiAutoKeyedSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSkipList<K,T,Pr,R> &right)
02470 {
02471   return ((left.size() == right.size()) &&
02472           (std::equal(left.begin(), left.end(), right.begin())));
02473 }
02474 
02476 
02481 template <class K, class T, class Pr, class R>
02482 bool operator!=(const MultiAutoKeyedSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSkipList<K,T,Pr,R> &right)
02483 {
02484   return !(left==right);
02485 }
02486 
02488 
02493 template <class K, class T, class Pr, class R>
02494 bool operator<(const MultiAutoKeyedSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSkipList<K,T,Pr,R> &right)
02495 {
02496   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
02497 }
02498 
02500 
02505 template <class K, class T, class Pr, class R>
02506 bool operator<=(const MultiAutoKeyedSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSkipList<K,T,Pr,R> &right)
02507 {
02508   return !(right < left);
02509 }
02510 
02512 
02517 template <class K, class T, class Pr, class R>
02518 bool operator>(const MultiAutoKeyedSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSkipList<K,T,Pr,R> &right)
02519 {
02520   return (right < left);
02521 }
02522 
02524 
02529 template <class K, class T, class Pr, class R>
02530 bool operator>=(const MultiAutoKeyedSkipList<K,T,Pr,R> &left, const MultiAutoKeyedSkipList<K,T,Pr,R> &right)
02531 {
02532   return !(left < right);
02533 }
02534 
02535 
02536 /*#define csarg1 template <class T, class Pr, class R>
02537 #define csarg2 MultiAutoKeyedSkipList<K,T,Pr,R>
02538 CSDefineCompOps(csarg1, csarg2)
02539 #undef csarg1
02540 #undef csarg2
02541 */
 All Classes Files Functions Variables Typedefs