CSAutoAccessSkipList.h

Go to the documentation of this file.
00001 
00010 
00011 
00058 template <class K, class T, class A=XAccessSelf<K,T>, class Pr = std::less<K>, class R = RNG >
00059 class AutoAccessSkipList
00060 {
00061 public:
00062   class T0;
00063   class T1;
00064   friend class T0;
00065   friend class T1;
00067   typedef size_t size_type;
00069 
00072   typedef ptrdiff_t difference_type;
00074   typedef AutoAccessSkipList<K,T,A,Pr,R> container_type;
00076   typedef K key_type;
00078   typedef T value_type;
00080   typedef BidiIdxNode<value_type> node_type;
00082 
00087   typedef T0 iterator;
00089   typedef value_type* pointer;
00091   typedef value_type& reference;
00093   typedef T data_type;
00095   typedef T mapped_type;
00097   typedef T& mapped_type_reference;
00099   typedef const T const_mapped_type;
00101   typedef const T& const_mapped_type_reference;
00103   typedef const T& const_reference;
00105   typedef T1 const_iterator;
00107 
00110   typedef std::reverse_iterator<iterator> reverse_iterator;
00112   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
00114   typedef std::pair<iterator, bool> slpair;
00116   typedef std::pair<iterator, iterator> ipair;
00118   typedef std::pair<const_iterator, const_iterator> const_ipair;
00120   typedef Pr key_compare;
00121 
00123   class value_compare
00124     : public std::binary_function<value_type, value_type, bool>
00125   {
00126   friend class AutoAccessSkipList<K,T,A,Pr,R>;
00127   public:
00128     bool operator()(const value_type& left, const value_type& right) const
00129       {return (comp(a(left), a(right))); }
00130   protected:
00131     value_compare(const key_compare &pr) : comp(pr) {}
00132     key_compare comp;
00133     A a;
00134   };
00135 
00136 private:
00137   R rng; 
00138   A a;  
00139   key_compare KeyCompare; 
00140   value_compare ValueCompare; 
00141   unsigned int maxLevel; 
00142   unsigned int level;    
00143   node_type *head;  
00144   node_type *tail; 
00145   double probability; 
00146   size_type items; 
00147   mutable size_type scan_index; 
00148   mutable std::pair<size_type,node_type*> *update; 
00149 
00151 
00155   void Init(double probability,unsigned int maxLevel) {}
00156 
00158 
00163   node_type* Alloc(unsigned int level, const T &obj) {}
00164 
00166 
00170   node_type* Alloc(unsigned int level) {}
00171 
00173 
00176   void Free(node_type *item) {}
00177 
00179 
00182   unsigned int GenerateRandomLevel() const {}
00183 
00185   void adjust_levels() {}
00186 
00188 
00194   void scan(const key_type &val) const{}
00195 
00197 
00203   void scan(const value_type &val) const{}
00204 
00206 
00212   void scan(size_type index) const{}
00213 
00215 
00221   void scan(const node_type *nodex) const{}
00222 
00224 
00231   void scan(const iterator &where) const{}
00232 public:
00233 
00235 
00238   class T0 : public std::iterator<std::random_access_iterator_tag, value_type>
00239   {
00240   public:
00241     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00242     typedef std::random_acces_iterator_tag iterator_category;
00243     typedef typename baseclass::value_type value_type;
00244     typedef typename baseclass::value_type* pointer;
00245     typedef typename baseclass::value_type& reference;
00246     typedef ptrdiff_t difference_type;
00247 
00248     friend T1;
00249     friend container_type;
00250   private:
00251     container_type *container; 
00252     mutable size_type Findex; 
00253     node_type* node; 
00254   public:
00256     T0() {}
00257 
00259 
00262     T0(const T0 &t0){}
00263 
00265 
00268     T0(const T1 &t1){}
00269 
00271 
00277     T0(container_type *container, node_type* p){}
00278 
00280 
00285     T0(container_type *container, node_type* p, size_type index){}
00286 
00288 
00291     bool operator==(const T0& other) const{}
00292 
00294 
00297     bool operator!=(const T0& other) const{}
00298 
00300 
00303     bool operator==(const T1& other) const{}
00304 
00306 
00309     bool operator!=(const T1& other) const{}
00310 
00312 
00317     T0& operator++(){}
00318 
00320 
00325     T0 operator++(int){}
00326 
00328 
00333     T0& operator--(){}
00334 
00336 
00341     T0 operator--(int){}
00342 
00344 
00349     reference operator*() const{}
00350 
00352 
00357     pointer operator->() const{}
00358 
00360 
00363     bool operator<(const T0 &other) const{}
00364 
00366 
00369     bool operator<=(const T0 &other) const{}
00370 
00372 
00375     bool operator>(const T0 &other) const{}
00376 
00378 
00381     bool operator>=(const T0 &other) const{}
00382 
00384 
00387     bool operator<(const T1 &other) const{}
00388 
00390 
00393     bool operator<=(const T1 &other) const{}
00394 
00396 
00399     bool operator>(const T1 &other) const{}
00400 
00402 
00405     bool operator>=(const T1 &other) const{}
00406 
00408 
00412     T0 operator+(difference_type off) const{}
00413 
00415 
00419     T0 operator-(difference_type off) const{}
00420 
00422 
00426     T0& operator+=(difference_type off){}
00427 
00429 
00433     T0& operator-=(difference_type off){}
00434 
00436 
00440     difference_type operator-(const T0 &other) const{}
00441 
00443 
00447     difference_type operator-(const T1 &other) const{}
00448 
00450 
00456     int refresh(){}
00457 
00459 
00463     value_type& operator[](difference_type off) const{}
00464 
00466 
00469     size_type getIndex() const{}
00470   };
00471 
00473 
00476   class T1 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
00477   {
00478   public:
00479     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00480     typedef std::random_acces_iterator_tag iterator_category;
00481     typedef typename baseclass::value_type value_type;
00482     typedef typename const baseclass::value_type* pointer;
00483     typedef typename const baseclass::value_type& reference;
00484     typedef ptrdiff_t difference_type;
00485 
00486     friend T0;
00487     friend container_type;
00488   private:
00489     const container_type *container; 
00490     mutable size_type Findex; 
00491     const node_type* node; 
00492   public:
00494     T1() {}
00495 
00497 
00500     T1(const T1 &t1){}
00501 
00503 
00506     T1(const T0 &t0){}
00507 
00509 
00515     T1(container_type *container, node_type* p){}
00516 
00518 
00523     T1(container_type *container, node_type* p, size_type index){}
00524 
00526 
00529     bool operator==(const T0& other) const{}
00530 
00532 
00535     bool operator!=(const T0& other) const{}
00536 
00538 
00541     bool operator==(const T1& other) const{}
00542 
00544 
00547     bool operator!=(const T1& other) const{}
00548 
00550 
00555     T1& operator++(){}
00556 
00558 
00563     T1 operator++(int){}
00564 
00566 
00571     T1& operator--(){}
00572 
00574 
00579     T1 operator--(int){}
00580 
00582 
00587     reference operator*() const{}
00588 
00590 
00595     pointer operator->() const{}
00596 
00598 
00601     bool operator<(const T0 &other) const{}
00602 
00604 
00607     bool operator<=(const T0 &other) const{}
00608 
00610 
00613     bool operator>(const T0 &other) const{}
00614 
00616 
00619     bool operator>=(const T0 &other) const{}
00620 
00622 
00625     bool operator<(const T1 &other) const{}
00626 
00628 
00631     bool operator<=(const T1 &other) const{}
00632 
00634 
00637     bool operator>(const T1 &other) const{}
00638 
00640 
00643     bool operator>=(const T1 &other) const{}
00644 
00646 
00650     T1 operator+(difference_type off) const{}
00651 
00653 
00657     T1 operator-(difference_type off) const{}
00658 
00660 
00664     T1& operator+=(difference_type off){}
00665 
00667 
00671     T1& operator-=(difference_type off){}
00672 
00674 
00678     difference_type operator-(const T0 &other) const{}
00679 
00681 
00685     difference_type operator-(const T1 &other) const{}
00686 
00688 
00694     int refresh(){}
00695 
00697 
00701     value_type& operator[](difference_type off) const{}
00702 
00704 
00707     size_type getIndex() const{}
00708 
00709   };
00710 
00712 
00716   AutoAccessSkipList(){}
00717 
00719 
00725   explicit AutoAccessSkipList(size_type maxNodes){}
00726 
00728 
00732   AutoAccessSkipList(double probability, unsigned int maxLevel){}
00733 
00735 
00740   AutoAccessSkipList(const container_type &source){}
00741 
00743 
00750   template<class InIt> AutoAccessSkipList(InIt first, InIt last){}
00751 
00753 
00759   template<class InIt> AutoAccessSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
00760 
00762 
00770   template<class InIt> AutoAccessSkipList(InIt first, InIt last, size_type maxNodes){}
00771 
00773 
00779   explicit AutoAccessSkipList(const key_compare& comp){}
00780 
00782 
00790   template<class InIt> AutoAccessSkipList(InIt first, InIt last, const key_compare& comp){}
00791 
00793 
00800   template<class InIt> AutoAccessSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
00801 
00803 
00812   template<class InIt> AutoAccessSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
00813 
00815 
00818   ~AutoAccessSkipList(){}
00819 
00820 
00822 
00828   container_type& operator=(const container_type &source){}
00829 
00831 
00834   iterator begin(){}
00835 
00837 
00840   iterator end(){}
00841 
00843 
00846   const_iterator begin() const{}
00847 
00849 
00852   const_iterator end() const{}
00853 
00855 
00858   reverse_iterator rbegin(){}
00859 
00861 
00864   reverse_iterator rend(){}
00865 
00867 
00870   const_reverse_iterator rbegin() const{}
00871 
00873 
00876   const_reverse_iterator rend() const{}
00877 
00879 
00882   size_type size() const{}
00883 
00885 
00888   bool empty() const{}
00889 
00891 
00894   reference front(){}
00895 
00897 
00900   const_reference front() const{}
00901 
00903 
00906   reference back(){}
00907 
00909 
00912   const_reference back() const{}
00913 
00915   void pop_front(){}
00916 
00918   void destroy_front(){}
00919 
00921   void pop_back(){}
00922 
00924   void destroy_back(){}
00925 
00927 
00931   template<class InIt> void assign(InIt first, InIt last){}
00932 
00934 
00944   slpair insert(const value_type& val){}
00945 
00947 
00953   iterator insert(const iterator &where, const value_type& val) {}
00954 
00956 
00960   template<class InIt> void insert(InIt first, InIt last) {}
00961 
00963   void clear(){}
00964 
00966   void destroy(){}
00967 
00969   iterator erase(const iterator &where){}
00970 
00972   iterator destroy(const iterator &where){}
00973 
00975 
00982   iterator erase(const iterator &first, const iterator &last){}
00983 
00985 
00992   iterator destroy(const iterator &first, const iterator &last){}
00993 
00995 
00999   size_type erase(const key_type &keyval){}
01000 
01002 
01006   size_type destroy(const key_type &keyval){}
01007 
01009 
01013   iterator erase_index(size_type index);
01014 
01016 
01020   iterator destroy_index(size_type index);
01021 
01023 
01026   void swap(container_type& right) {}
01027 
01029 
01032   template<class Pr1> void erase_if(Pr1 pred);
01033 
01035 
01038   template<class Pr4> void destroy_if(Pr4 pred);
01039 
01041 
01052   void cut(const iterator &first, const iterator &last, container_type& right);
01053 
01055 
01061   mapped_type_reference operator[](size_type index){}
01062 
01064 
01070   const_mapped_type_reference operator[](size_type index) const{}
01071 
01073 
01079   mapped_type_reference at(size_type off){}
01080 
01082 
01088   const_mapped_type_reference at(size_type off) const{}
01089 
01091 
01097   mapped_type_reference operator[](const key_type& key){}
01098 
01100 
01106   const_mapped_type_reference operator[](const key_type& key) const{}
01107 
01109 
01115   mapped_type_reference operator()(const key_type& key){}
01116 
01118 
01124   const_mapped_type_reference operator()(const key_type& key) const{}
01125 
01127   key_compare key_comp() const { }
01128 
01130   value_compare value_comp() const { }
01131 
01133   size_type max_size() const{}
01134 
01136 
01143   const key_type& key(const value_type& value) const {}
01144 
01146 
01153   mapped_type& value(value_type& value) {}
01154 
01156 
01160   iterator find(const key_type& keyval) {}
01161 
01163 
01167   const_iterator find(const key_type& keyval) const {}
01168 
01170 
01174   size_type count(const key_type& keyval) const {}
01175 
01176 
01178 
01182   iterator lower_bound(const key_type& keyval) {}
01183 
01185 
01189   const_iterator lower_bound(const key_type& keyval) const {}
01190 
01192 
01196   iterator upper_bound(const key_type& keyval) {}
01197 
01199 
01203   const_iterator upper_bound(const key_type& keyval) const {}
01204 
01206 
01210   ipair equal_range(const key_type& keyval) {}
01211 
01213 
01217   const_ipair equal_range(const key_type& keyval) const {}
01218 };
01219 
01221 
01226 template <class K, class T, class Pr, class R>
01227 bool operator==(const AutoAccessSkipList<K,T,A,Pr,R> &left, const AutoAccessSkipList<K,T,A,Pr,R> &right)
01228 {
01229   return ((left.size() == right.size()) &&
01230           (std::equal(left.begin(), left.end(), right.begin())));
01231 
01232 }
01233 
01235 
01240 template <class K, class T, class Pr, class R>
01241 bool operator!=(const AutoAccessSkipList<K,T,A,Pr,R> &left, const AutoAccessSkipList<K,T,A,Pr,R> &right)
01242 {
01243   return !(left==right);
01244 }
01245 
01247 
01252 template <class K, class T, class Pr, class R>
01253 bool operator<(const AutoAccessSkipList<K,T,A,Pr,R> &left, const AutoAccessSkipList<K,T,A,Pr,R> &right)
01254 {
01255   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
01256 }
01257 
01259 
01264 template <class K, class T, class Pr, class R>
01265 bool operator<=(const AutoAccessSkipList<K,T,A,Pr,R> &left, const AutoAccessSkipList<K,T,A,Pr,R> &right)
01266 {
01267   return !(right < left);
01268 }
01269 
01271 
01276 template <class K, class T, class Pr, class R>
01277 bool operator>(const AutoAccessSkipList<K,T,A,Pr,R> &left, const AutoAccessSkipList<K,T,A,Pr,R> &right)
01278 {
01279   return (right < left);
01280 }
01281 
01283 
01288 template <class K, class T, class Pr, class R>
01289 bool operator>=(const AutoAccessSkipList<K,T,A,Pr,R> &left, const AutoAccessSkipList<K,T,A,Pr,R> &right)
01290 {
01291   return !(left < right);
01292 }
01293 
01294 /*#define csarg1 template <class T, class Pr, class R>
01295 #define csarg2 AutoAccessSkipList<K,T,A,Pr,R>
01296 CSDefineCompOps(csarg1, csarg2)
01297 #undef csarg1
01298 #undef csarg2
01299 
01300 #undef CSUNIQUE
01301 #define CSUNIQUE(a,b) b
01302 */
01303 
01305 
01352 template <class K, class T, class A=XAccessSelf<K,T>, class Pr = std::less<K>, class R = RNG >
01353 class MultiAutoAccessSkipList
01354 {
01355 public:
01356   class T0;
01357   class T1;
01358   friend class T0;
01359   friend class T1;
01361   typedef size_t size_type;
01363 
01366   typedef ptrdiff_t difference_type;
01368   typedef MultiAutoAccessSkipList<K,T,A,Pr,R> container_type;
01370   typedef K key_type;
01372   typedef T value_type;
01374   typedef BidiIdxNode<value_type> node_type;
01376 
01381   typedef T0 iterator;
01383   typedef value_type* pointer;
01385   typedef value_type& reference;
01387   typedef T data_type;
01389   typedef T mapped_type;
01391   typedef T& mapped_type_reference;
01393   typedef const T const_mapped_type;
01395   typedef const T& const_mapped_type_reference;
01397   typedef const T& const_reference;
01399   typedef T1 const_iterator;
01401 
01404   typedef std::reverse_iterator<iterator> reverse_iterator;
01406   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
01408   typedef std::pair<iterator, iterator> ipair;
01410   typedef std::pair<const_iterator, const_iterator> const_ipair;
01412   typedef Pr key_compare;
01413 
01415   class value_compare
01416     : public std::binary_function<value_type, value_type, bool>
01417   {
01418   friend class AutoAccessSkipList<K,T,A,Pr,R>;
01419   public:
01420     bool operator()(const value_type& left, const value_type& right) const
01421       {return (comp(a(left), a(right))); }
01422   protected:
01423     value_compare(const key_compare &pr) : comp(pr) {}
01424     key_compare comp;
01425     A a;
01426   };
01427 
01428 private:
01429   R rng; 
01430   A a;  
01431   key_compare KeyCompare; 
01432   value_compare ValueCompare; 
01433   unsigned int maxLevel; 
01434   unsigned int level;    
01435   node_type *head;  
01436   node_type *tail; 
01437   double probability; 
01438   size_type items; 
01439   mutable size_type scan_index; 
01440   mutable std::pair<size_type,node_type*> *update; 
01441 
01443 
01447   void Init(double probability,unsigned int maxLevel) {}
01448 
01450 
01455   node_type* Alloc(unsigned int level, const T &obj) {}
01456 
01458 
01462   node_type* Alloc(unsigned int level) {}
01463 
01465 
01468   void Free(node_type *item) {}
01469 
01471 
01474   unsigned int GenerateRandomLevel() const {}
01475 
01477   void adjust_levels() {}
01478 
01480 
01486   void scan(const key_type &val) const{}
01487 
01489 
01495   void scan(const value_type &val) const{}
01496 
01498 
01504   void scan(size_type index) const{}
01505 
01507 
01513   void scan(const node_type *nodex) const{}
01514 
01516 
01523   void scan(const iterator &where) const{}
01524 
01525 public:
01527 
01530   class T0 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
01531   {
01532   public:
01533     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01534     typedef std::random_acces_iterator_tag iterator_category;
01535     typedef typename baseclass::value_type value_type;
01536     typedef typename baseclass::value_type* pointer;
01537     typedef typename baseclass::value_type& reference;
01538     typedef ptrdiff_t difference_type;
01539 
01540     friend T1;
01541     friend container_type;
01542   private:
01543     container_type *container; 
01544     mutable size_type Findex; 
01545     node_type* node; 
01546   public:
01548     T0() {}
01549 
01551 
01554     T0(const T0 &t0){}
01555 
01557 
01560     T0(const T1 &t1){}
01561 
01563 
01569     T0(container_type *container, node_type* p){}
01570 
01572 
01577     T0(container_type *container, node_type* p, size_type index){}
01578 
01580 
01583     bool operator==(const T0& other) const{}
01584 
01586 
01589     bool operator!=(const T0& other) const{}
01590 
01592 
01595     bool operator==(const T1& other) const{}
01596 
01598 
01601     bool operator!=(const T1& other) const{}
01602 
01604 
01609     T0& operator++(){}
01610 
01612 
01617     T0 operator++(int){}
01618 
01620 
01625     T0& operator--(){}
01626 
01628 
01633     T0 operator--(int){}
01634 
01636 
01641     reference operator*() const{}
01642 
01644 
01649     pointer operator->() const{}
01650 
01652 
01655     bool operator<(const T0 &other) const{}
01656 
01658 
01661     bool operator<=(const T0 &other) const{}
01662 
01664 
01667     bool operator>(const T0 &other) const{}
01668 
01670 
01673     bool operator>=(const T0 &other) const{}
01674 
01676 
01679     bool operator<(const T1 &other) const{}
01680 
01682 
01685     bool operator<=(const T1 &other) const{}
01686 
01688 
01691     bool operator>(const T1 &other) const{}
01692 
01694 
01697     bool operator>=(const T1 &other) const{}
01698 
01700 
01704     T0 operator+(difference_type off) const{}
01705 
01707 
01711     T0 operator-(difference_type off) const{}
01712 
01714 
01718     T0& operator+=(difference_type off){}
01719 
01721 
01725     T0& operator-=(difference_type off){}
01726 
01728 
01732     difference_type operator-(const T0 &other) const{}
01733 
01735 
01739     difference_type operator-(const T1 &other) const{}
01740 
01742 
01748     int refresh(){}
01749 
01751 
01755     value_type& operator[](difference_type off) const{}
01756 
01758 
01761     size_type getIndex() const{}
01762   };
01763 
01765 
01768   class T1 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
01769   {
01770   public:
01771     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01772     typedef std::random_acces_iterator_tag iterator_category;
01773     typedef typename baseclass::value_type value_type;
01774     typedef typename const baseclass::value_type* pointer;
01775     typedef typename const baseclass::value_type& reference;
01776     typedef ptrdiff_t difference_type;
01777 
01778     friend T0;
01779     friend container_type;
01780   private:
01781     const container_type *container; 
01782     mutable size_type Findex; 
01783     const node_type* node; 
01784   public:
01786     T1() {}
01787 
01789 
01792     T1(const T1 &t1){}
01793 
01795 
01798     T1(const T0 &t0){}
01799 
01801 
01807     T1(container_type *container, node_type* p){}
01808 
01810 
01815     T1(container_type *container, node_type* p, size_type index){}
01816 
01818 
01821     bool operator==(const T0& other) const{}
01822 
01824 
01827     bool operator!=(const T0& other) const{}
01828 
01830 
01833     bool operator==(const T1& other) const{}
01834 
01836 
01839     bool operator!=(const T1& other) const{}
01840 
01842 
01847     T1& operator++(){}
01848 
01850 
01855     T1 operator++(int){}
01856 
01858 
01863     T1& operator--(){}
01864 
01866 
01871     T1 operator--(int){}
01872 
01874 
01879     reference operator*() const{}
01880 
01882 
01887     pointer operator->() const{}
01888 
01890 
01893     bool operator<(const T0 &other) const{}
01894 
01896 
01899     bool operator<=(const T0 &other) const{}
01900 
01902 
01905     bool operator>(const T0 &other) const{}
01906 
01908 
01911     bool operator>=(const T0 &other) const{}
01912 
01914 
01917     bool operator<(const T1 &other) const{}
01918 
01920 
01923     bool operator<=(const T1 &other) const{}
01924 
01926 
01929     bool operator>(const T1 &other) const{}
01930 
01932 
01935     bool operator>=(const T1 &other) const{}
01936 
01938 
01942     T1 operator+(difference_type off) const{}
01943 
01945 
01949     T1 operator-(difference_type off) const{}
01950 
01952 
01956     T1& operator+=(difference_type off){}
01957 
01959 
01963     T1& operator-=(difference_type off){}
01964 
01966 
01970     difference_type operator-(const T0 &other) const{}
01971 
01973 
01977     difference_type operator-(const T1 &other) const{}
01978 
01980 
01986     int refresh(){}
01987 
01989 
01993     value_type& operator[](difference_type off) const{}
01994 
01996 
01999     size_type getIndex() const{}
02000 
02001   };
02002 
02003 
02005 
02009   MultiAutoAccessSkipList(){}
02010 
02012 
02018   explicit MultiAutoAccessSkipList(size_type maxNodes){}
02019 
02021 
02025   MultiAutoAccessSkipList(double probability, unsigned int maxLevel){}
02026 
02028 
02033   MultiAutoAccessSkipList(const container_type &source){}
02034 
02036 
02043   template<class InIt> MultiAutoAccessSkipList(InIt first, InIt last){}
02044 
02046 
02052   template<class InIt> MultiAutoAccessSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
02053 
02055 
02063   template<class InIt> MultiAutoAccessSkipList(InIt first, InIt last, size_type maxNodes){}
02064 
02066 
02072   explicit MultiAutoAccessSkipList(const key_compare& comp){}
02073 
02075 
02083   template<class InIt> MultiAutoAccessSkipList(InIt first, InIt last, const key_compare& comp){}
02084 
02086 
02093   template<class InIt> MultiAutoAccessSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
02094 
02096 
02105   template<class InIt> MultiAutoAccessSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
02106 
02108 
02111   ~MultiAutoAccessSkipList(){}
02112 
02113 
02115 
02121   container_type& operator=(const container_type &source){}
02122 
02124 
02127   iterator begin(){}
02128 
02130 
02133   iterator end(){}
02134 
02136 
02139   const_iterator begin() const{}
02140 
02142 
02145   const_iterator end() const{}
02146 
02148 
02151   reverse_iterator rbegin(){}
02152 
02154 
02157   reverse_iterator rend(){}
02158 
02160 
02163   const_reverse_iterator rbegin() const{}
02164 
02166 
02169   const_reverse_iterator rend() const{}
02170 
02172 
02175   size_type size() const{}
02176 
02178 
02181   bool empty() const{}
02182 
02184 
02187   reference front(){}
02188 
02190 
02193   const_reference front() const{}
02194 
02196 
02199   reference back(){}
02200 
02202 
02205   const_reference back() const{}
02206 
02208   void pop_front(){}
02209 
02211   void destroy_front(){}
02212 
02214   void pop_back(){}
02215 
02217   void destroy_back(){}
02218 
02220 
02224   template<class InIt> void assign(InIt first, InIt last){}
02225 
02227 
02231   iterator insert(const value_type& val){}
02232 
02234 
02240   iterator insert(const iterator &where, const value_type& val) {}
02241 
02243 
02247   template<class InIt> void insert(InIt first, InIt last) {}
02248 
02250   void clear(){}
02251 
02253   void destroy(){}
02254 
02256   iterator erase(const iterator &where){}
02257 
02259   iterator destroy(const iterator &where){}
02260 
02262 
02269   iterator erase(const iterator &first, const iterator &last){}
02270 
02272 
02279   iterator destroy(const iterator &first, const iterator &last){}
02280 
02282 
02286   size_type erase(const key_type &keyval){}
02287 
02289 
02293   size_type destroy(const key_type &keyval){}
02294 
02296 
02300   iterator erase_index(size_type index);
02301 
02303 
02307   iterator destroy_index(size_type index);
02308 
02310 
02313   void swap(container_type& right) {}
02314 
02316 
02319   template<class Pr1> void erase_if(Pr1 pred);
02320 
02322 
02325   template<class Pr4> void destroy_if(Pr4 pred);
02326 
02328 
02339   void cut(const iterator &first, const iterator &last, container_type& right);
02340 
02342 
02348   mapped_type_reference operator[](size_type index){}
02349 
02351 
02357   const_mapped_type_reference operator[](size_type index) const{}
02358 
02360 
02366   mapped_type_reference at(size_type off){}
02367 
02369 
02375   const_mapped_type_reference at(size_type off) const{}
02376 
02378   key_compare key_comp() const { }
02379 
02381   value_compare value_comp() const { }
02382 
02384   size_type max_size() const{}
02385 
02387 
02394   const key_type& key(const value_type& value) const {}
02395 
02397 
02404   mapped_type& value(value_type& value) {}
02405 
02407 
02411   iterator find(const key_type& keyval) {}
02412 
02414 
02418   const_iterator find(const key_type& keyval) const {}
02419 
02421 
02425   size_type count(const key_type& keyval) const {}
02426 
02427 
02429 
02433   iterator lower_bound(const key_type& keyval) {}
02434 
02436 
02440   const_iterator lower_bound(const key_type& keyval) const {}
02441 
02443 
02447   iterator upper_bound(const key_type& keyval) {}
02448 
02450 
02454   const_iterator upper_bound(const key_type& keyval) const {}
02455 
02457 
02461   ipair equal_range(const key_type& keyval) {}
02462 
02464 
02468   const_ipair equal_range(const key_type& keyval) const {}
02469 };
02470 
02472 
02477 template <class K, class T, class Pr, class R>
02478 bool operator==(const MultiAutoAccessSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSkipList<K,T,A,Pr,R> &right)
02479 {
02480   return ((left.size() == right.size()) &&
02481           (std::equal(left.begin(), left.end(), right.begin())));
02482 }
02483 
02485 
02490 template <class K, class T, class Pr, class R>
02491 bool operator!=(const MultiAutoAccessSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSkipList<K,T,A,Pr,R> &right)
02492 {
02493   return !(left==right);
02494 }
02495 
02497 
02502 template <class K, class T, class Pr, class R>
02503 bool operator<(const MultiAutoAccessSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSkipList<K,T,A,Pr,R> &right)
02504 {
02505   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
02506 }
02507 
02509 
02514 template <class K, class T, class Pr, class R>
02515 bool operator<=(const MultiAutoAccessSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSkipList<K,T,A,Pr,R> &right)
02516 {
02517   return !(right < left);
02518 }
02519 
02521 
02526 template <class K, class T, class Pr, class R>
02527 bool operator>(const MultiAutoAccessSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSkipList<K,T,A,Pr,R> &right)
02528 {
02529   return (right < left);
02530 }
02531 
02533 
02538 template <class K, class T, class Pr, class R>
02539 bool operator>=(const MultiAutoAccessSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSkipList<K,T,A,Pr,R> &right)
02540 {
02541   return !(left < right);
02542 }
02543 
02544 
02545 /*#define csarg1 template <class T, class Pr, class R>
02546 #define csarg2 MultiAutoAccessSkipList<K,T,A,Pr,R>
02547 CSDefineCompOps(csarg1, csarg2)
02548 #undef csarg1
02549 #undef csarg2
02550 */
 All Classes Files Functions Variables Typedefs