CSAutoAccessSSkipList.h

Go to the documentation of this file.
00001 
00010 
00011 
00066 template <class K, class T, class A=XAccessSelf<K,T>, class Pr = std::less<K>, class R = RNG >
00067 class AutoAccessSSkipList
00068 {
00069 public:
00070   class T0;
00071   class T1;
00072   friend class T0;
00073   friend class T1;
00075   typedef size_t size_type;
00077 
00080   typedef ptrdiff_t difference_type;
00082   typedef AutoAccessSSkipList<K,T,A,Pr,R> container_type;
00084   typedef K key_type;
00086   typedef T value_type;
00088   typedef ForwardIdxNode<value_type> node_type;
00090 
00095   typedef T0 iterator;
00097   typedef value_type* pointer;
00099   typedef value_type& reference;
00101   typedef T data_type;
00103   typedef T mapped_type;
00105   typedef T& mapped_type_reference;
00107   typedef const T const_mapped_type;
00109   typedef const T& const_mapped_type_reference;
00111   typedef const T& const_reference;
00113   typedef T1 const_iterator;
00115 
00118   typedef std::reverse_iterator<iterator> reverse_iterator;
00120   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
00122   typedef std::pair<iterator, bool> slpair;
00124   typedef std::pair<iterator, iterator> ipair;
00126   typedef std::pair<const_iterator, const_iterator> const_ipair;
00128   typedef Pr key_compare;
00129 
00131   class value_compare
00132     : public std::binary_function<value_type, value_type, bool>
00133   {
00134   friend class AutoAccessSkipList<K,T,A,Pr,R>;
00135   public:
00136     bool operator()(const value_type& left, const value_type& right) const
00137       {return (comp(a(left), a(right))); }
00138   protected:
00139     value_compare(const key_compare &pr) : comp(pr) {}
00140     key_compare comp;
00141     A a;
00142   };
00143 
00144 private:
00145   R rng; 
00146   A a;  
00147   key_compare KeyCompare; 
00148   value_compare ValueCompare; 
00149   unsigned int maxLevel; 
00150   unsigned int level;    
00151   node_type *head;  
00152   node_type *tail; 
00153   double probability; 
00154   size_type items; 
00155   mutable size_type scan_index; 
00156   mutable std::pair<size_type,node_type*> *update; 
00157 
00159 
00163   void Init(double probability,unsigned int maxLevel) {}
00164 
00166 
00171   node_type* Alloc(unsigned int level, const T &obj) {}
00172 
00174 
00178   node_type* Alloc(unsigned int level) {}
00179 
00181 
00184   void Free(node_type *item) {}
00185 
00187 
00190   unsigned int GenerateRandomLevel() const {}
00191 
00193   void adjust_levels() {}
00194 
00196 
00202   void scan(const key_type &val) const{}
00203 
00205 
00211   void scan(const value_type &val) const{}
00212 
00214 
00220   void scan(size_type index) const{}
00221 
00223 
00229   void scan(const node_type *nodex) const{}
00230 
00232 
00239   void scan(const iterator &where) const{}
00240 public:
00241 
00243 
00246   class T0 : public std::iterator<std::random_access_iterator_tag, value_type>
00247   {
00248   public:
00249     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00250     typedef std::random_acces_iterator_tag iterator_category;
00251     typedef typename baseclass::value_type value_type;
00252     typedef typename const baseclass::value_type* pointer;
00253     typedef typename const baseclass::value_type& reference;
00254     typedef ptrdiff_t difference_type;
00255 
00256     friend T1;
00257     friend container_type;
00258   private:
00259     container_type *container; 
00260     mutable size_type Findex; 
00261     node_type* node; 
00262   public:
00264     T0() {}
00265 
00267 
00270     T0(const T0 &t0){}
00271 
00273 
00276     T0(const T1 &t1){}
00277 
00279 
00285     T0(container_type *container, node_type* p){}
00286 
00288 
00293     T0(container_type *container, node_type* p, size_type index){}
00294 
00296 
00299     bool operator==(const T0& other) const{}
00300 
00302 
00305     bool operator!=(const T0& other) const{}
00306 
00308 
00311     bool operator==(const T1& other) const{}
00312 
00314 
00317     bool operator!=(const T1& other) const{}
00318 
00320 
00325     T0& operator++(){}
00326 
00328 
00333     T0 operator++(int){}
00334 
00336 
00341     T0& operator--(){}
00342 
00344 
00349     T0 operator--(int){}
00350 
00352 
00357     reference operator*() const{}
00358 
00360 
00365     pointer operator->() const{}
00366 
00368 
00371     bool operator<(const T0 &other) const{}
00372 
00374 
00377     bool operator<=(const T0 &other) const{}
00378 
00380 
00383     bool operator>(const T0 &other) const{}
00384 
00386 
00389     bool operator>=(const T0 &other) const{}
00390 
00392 
00395     bool operator<(const T1 &other) const{}
00396 
00398 
00401     bool operator<=(const T1 &other) const{}
00402 
00404 
00407     bool operator>(const T1 &other) const{}
00408 
00410 
00413     bool operator>=(const T1 &other) const{}
00414 
00416 
00420     T0 operator+(difference_type off) const{}
00421 
00423 
00427     T0 operator-(difference_type off) const{}
00428 
00430 
00434     T0& operator+=(difference_type off){}
00435 
00437 
00441     T0& operator-=(difference_type off){}
00442 
00444 
00448     difference_type operator-(const T0 &other) const{}
00449 
00451 
00455     difference_type operator-(const T1 &other) const{}
00456 
00458 
00464     int refresh(){}
00465 
00467 
00471     value_type& operator[](difference_type off) const{}
00472 
00474 
00477     size_type getIndex() const{}
00478   };
00479 
00481 
00484   class T1 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
00485   {
00486   public:
00487     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
00488     typedef std::random_acces_iterator_tag iterator_category;
00489     typedef typename baseclass::value_type value_type;
00490     typedef typename const baseclass::value_type* pointer;
00491     typedef typename const baseclass::value_type& reference;
00492     typedef ptrdiff_t difference_type;
00493 
00494     friend T0;
00495     friend container_type;
00496   private:
00497     const container_type *container; 
00498     mutable size_type Findex; 
00499     const node_type* node; 
00500   public:
00502     T1() {}
00503 
00505 
00508     T1(const T1 &t1){}
00509 
00511 
00514     T1(const T0 &t0){}
00515 
00517 
00523     T1(container_type *container, node_type* p){}
00524 
00526 
00531     T1(container_type *container, node_type* p, size_type index){}
00532 
00534 
00537     bool operator==(const T0& other) const{}
00538 
00540 
00543     bool operator!=(const T0& other) const{}
00544 
00546 
00549     bool operator==(const T1& other) const{}
00550 
00552 
00555     bool operator!=(const T1& other) const{}
00556 
00558 
00563     T1& operator++(){}
00564 
00566 
00571     T1 operator++(int){}
00572 
00574 
00579     T1& operator--(){}
00580 
00582 
00587     T1 operator--(int){}
00588 
00590 
00595     reference operator*() const{}
00596 
00598 
00603     pointer operator->() const{}
00604 
00606 
00609     bool operator<(const T0 &other) const{}
00610 
00612 
00615     bool operator<=(const T0 &other) const{}
00616 
00618 
00621     bool operator>(const T0 &other) const{}
00622 
00624 
00627     bool operator>=(const T0 &other) const{}
00628 
00630 
00633     bool operator<(const T1 &other) const{}
00634 
00636 
00639     bool operator<=(const T1 &other) const{}
00640 
00642 
00645     bool operator>(const T1 &other) const{}
00646 
00648 
00651     bool operator>=(const T1 &other) const{}
00652 
00654 
00658     T1 operator+(difference_type off) const{}
00659 
00661 
00665     T1 operator-(difference_type off) const{}
00666 
00668 
00672     T1& operator+=(difference_type off){}
00673 
00675 
00679     T1& operator-=(difference_type off){}
00680 
00682 
00686     difference_type operator-(const T0 &other) const{}
00687 
00689 
00693     difference_type operator-(const T1 &other) const{}
00694 
00696 
00702     int refresh(){}
00703 
00705 
00709     value_type& operator[](difference_type off) const{}
00710 
00712 
00715     size_type getIndex() const{}
00716 
00717   };
00718 
00720 
00724   AutoAccessSSkipList(){}
00725 
00727 
00733   explicit AutoAccessSSkipList(size_type maxNodes){}
00734 
00736 
00740   AutoAccessSSkipList(double probability, unsigned int maxLevel){}
00741 
00743 
00748   AutoAccessSSkipList(const container_type &source){}
00749 
00751 
00758   template<class InIt> AutoAccessSSkipList(InIt first, InIt last){}
00759 
00761 
00767   template<class InIt> AutoAccessSSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
00768 
00770 
00778   template<class InIt> AutoAccessSSkipList(InIt first, InIt last, size_type maxNodes){}
00779 
00781 
00787   explicit AutoAccessSSkipList(const key_compare& comp){}
00788 
00790 
00798   template<class InIt> AutoAccessSSkipList(InIt first, InIt last, const key_compare& comp){}
00799 
00801 
00808   template<class InIt> AutoAccessSSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
00809 
00811 
00820   template<class InIt> AutoAccessSSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
00821 
00823 
00826   ~AutoAccessSSkipList(){}
00827 
00828 
00830 
00836   container_type& operator=(const container_type &source){}
00837 
00839 
00842   iterator begin(){}
00843 
00845 
00848   iterator end(){}
00849 
00851 
00854   const_iterator begin() const{}
00855 
00857 
00860   const_iterator end() const{}
00861 
00863 
00866   reverse_iterator rbegin(){}
00867 
00869 
00872   reverse_iterator rend(){}
00873 
00875 
00878   const_reverse_iterator rbegin() const{}
00879 
00881 
00884   const_reverse_iterator rend() const{}
00885 
00887 
00890   size_type size() const{}
00891 
00893 
00896   bool empty() const{}
00897 
00899 
00902   reference front(){}
00903 
00905 
00908   const_reference front() const{}
00909 
00911 
00914   reference back(){}
00915 
00917 
00920   const_reference back() const{}
00921 
00923   void pop_front(){}
00924 
00926   void destroy_front(){}
00927 
00929   void pop_back(){}
00930 
00932   void destroy_back(){}
00933 
00935 
00939   template<class InIt> void assign(InIt first, InIt last){}
00940 
00942 
00952   slpair insert(const value_type& val){}
00953 
00955 
00961   iterator insert(const iterator &where, const value_type& val) {}
00962 
00964 
00968   template<class InIt> void insert(InIt first, InIt last) {}
00969 
00971   void clear(){}
00972 
00974   void destroy(){}
00975 
00977   iterator erase(const iterator &where){}
00978 
00980   iterator destroy(const iterator &where){}
00981 
00983 
00990   iterator erase(const iterator &first, const iterator &last){}
00991 
00993 
01000   iterator destroy(const iterator &first, const iterator &last){}
01001 
01003 
01007   size_type erase(const key_type &keyval){}
01008 
01010 
01014   size_type destroy(const key_type &keyval){}
01015 
01017 
01021   iterator erase_index(size_type index);
01022 
01024 
01028   iterator destroy_index(size_type index);
01029 
01031 
01034   void swap(container_type& right) {}
01035 
01037 
01040   template<class Pr1> void erase_if(Pr1 pred);
01041 
01043 
01046   template<class Pr4> void destroy_if(Pr4 pred);
01047 
01049 
01060   void cut(const iterator &first, const iterator &last, container_type& right);
01061 
01063 
01069   mapped_type_reference operator[](size_type index){}
01070 
01072 
01078   const_mapped_type_reference operator[](size_type index) const{}
01079 
01081 
01087   mapped_type_reference at(size_type off){}
01088 
01090 
01096   const_mapped_type_reference at(size_type off) const{}
01097 
01099 
01105   mapped_type_reference operator[](const key_type& key){}
01106 
01108 
01114   const_mapped_type_reference operator[](const key_type& key) const{}
01115 
01117 
01123   mapped_type_reference operator()(const key_type& key){}
01124 
01126 
01132   const_mapped_type_reference operator()(const key_type& key) const{}
01133 
01135   key_compare key_comp() const { }
01136 
01138   value_compare value_comp() const { }
01139 
01141   size_type max_size() const{}
01142 
01144 
01151   const key_type& key(const value_type& value) const {}
01152 
01154 
01161   mapped_type& value(value_type& value) {}
01162 
01164 
01168   iterator find(const key_type& keyval) {}
01169 
01171 
01175   const_iterator find(const key_type& keyval) const {}
01176 
01178 
01182   size_type count(const key_type& keyval) const {}
01183 
01184 
01186 
01190   iterator lower_bound(const key_type& keyval) {}
01191 
01193 
01197   const_iterator lower_bound(const key_type& keyval) const {}
01198 
01200 
01204   iterator upper_bound(const key_type& keyval) {}
01205 
01207 
01211   const_iterator upper_bound(const key_type& keyval) const {}
01212 
01214 
01218   ipair equal_range(const key_type& keyval) {}
01219 
01221 
01225   const_ipair equal_range(const key_type& keyval) const {}
01226 };
01227 
01229 
01234 template <class K, class T, class Pr, class R>
01235 bool operator==(const AutoAccessSSkipList<K,T,A,Pr,R> &left, const AutoAccessSSkipList<K,T,A,Pr,R> &right)
01236 {
01237   return ((left.size() == right.size()) &&
01238           (std::equal(left.begin(), left.end(), right.begin())));
01239 
01240 }
01241 
01243 
01248 template <class K, class T, class Pr, class R>
01249 bool operator!=(const AutoAccessSSkipList<K,T,A,Pr,R> &left, const AutoAccessSSkipList<K,T,A,Pr,R> &right)
01250 {
01251   return !(left==right);
01252 }
01253 
01255 
01260 template <class K, class T, class Pr, class R>
01261 bool operator<(const AutoAccessSSkipList<K,T,A,Pr,R> &left, const AutoAccessSSkipList<K,T,A,Pr,R> &right)
01262 {
01263   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
01264 }
01265 
01267 
01272 template <class K, class T, class Pr, class R>
01273 bool operator<=(const AutoAccessSSkipList<K,T,A,Pr,R> &left, const AutoAccessSSkipList<K,T,A,Pr,R> &right)
01274 {
01275   return !(right < left);
01276 }
01277 
01279 
01284 template <class K, class T, class Pr, class R>
01285 bool operator>(const AutoAccessSSkipList<K,T,A,Pr,R> &left, const AutoAccessSSkipList<K,T,A,Pr,R> &right)
01286 {
01287   return (right < left);
01288 }
01289 
01291 
01296 template <class K, class T, class Pr, class R>
01297 bool operator>=(const AutoAccessSSkipList<K,T,A,Pr,R> &left, const AutoAccessSSkipList<K,T,A,Pr,R> &right)
01298 {
01299   return !(left < right);
01300 }
01301 
01302 /*#define csarg1 template <class T, class Pr, class R>
01303 #define csarg2 AutoAccessSSkipList<K,T,A,Pr,R>
01304 CSDefineCompOps(csarg1, csarg2)
01305 #undef csarg1
01306 #undef csarg2
01307 
01308 #undef CSUNIQUE
01309 #define CSUNIQUE(a,b) b
01310 */
01311 
01313 
01368 template <class K, class T, class A=XAccessSelf<K,T>, class Pr = std::less<K>, class R = RNG >
01369 class MultiAutoAccessSSkipList
01370 {
01371 public:
01372   class T0;
01373   class T1;
01374   friend class T0;
01375   friend class T1;
01377   typedef size_t size_type;
01379 
01382   typedef ptrdiff_t difference_type;
01384   typedef MultiAutoAccessSSkipList<K,T,A,Pr,R> container_type;
01386   typedef K key_type;
01388   typedef T value_type;
01390   typedef ForwardIdxNode<value_type> node_type;
01392 
01397   typedef T0 iterator;
01399   typedef value_type* pointer;
01401   typedef value_type& reference;
01403   typedef T data_type;
01405   typedef T mapped_type;
01407   typedef T& mapped_type_reference;
01409   typedef const T const_mapped_type;
01411   typedef const T& const_mapped_type_reference;
01413   typedef const T& const_reference;
01415   typedef T1 const_iterator;
01417 
01420   typedef std::reverse_iterator<iterator> reverse_iterator;
01422   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
01424   typedef std::pair<iterator, iterator> ipair;
01426   typedef std::pair<const_iterator, const_iterator> const_ipair;
01428   typedef Pr key_compare;
01429 
01431   class value_compare
01432     : public std::binary_function<value_type, value_type, bool>
01433   {
01434   friend class AutoAccessSkipList<K,T,A,Pr,R>;
01435   public:
01436     bool operator()(const value_type& left, const value_type& right) const
01437       {return (comp(a(left), a(right))); }
01438   protected:
01439     value_compare(const key_compare &pr) : comp(pr) {}
01440     key_compare comp;
01441     A a;
01442   };
01443 
01444 private:
01445   R rng; 
01446   A a;  
01447   key_compare KeyCompare; 
01448   value_compare ValueCompare; 
01449   unsigned int maxLevel; 
01450   unsigned int level;    
01451   node_type *head;  
01452   node_type *tail; 
01453   double probability; 
01454   size_type items; 
01455   mutable size_type scan_index; 
01456   mutable std::pair<size_type,node_type*> *update; 
01457 
01459 
01463   void Init(double probability,unsigned int maxLevel) {}
01464 
01466 
01471   node_type* Alloc(unsigned int level, const T &obj) {}
01472 
01474 
01478   node_type* Alloc(unsigned int level) {}
01479 
01481 
01484   void Free(node_type *item) {}
01485 
01487 
01490   unsigned int GenerateRandomLevel() const {}
01491 
01493   void adjust_levels() {}
01494 
01496 
01502   void scan(const key_type &val) const{}
01503 
01505 
01511   void scan(const value_type &val) const{}
01512 
01514 
01520   void scan(size_type index) const{}
01521 
01523 
01529   void scan(const node_type *nodex) const{}
01530 
01532 
01539   void scan(const iterator &where) const{}
01540 
01541 public:
01543 
01546   class T0 : public std::iterator<std::random_access_iterator_tag, value_type>
01547   {
01548   public:
01549     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01550     typedef std::random_acces_iterator_tag iterator_category;
01551     typedef typename baseclass::value_type value_type;
01552     typedef typename baseclass::value_type* pointer;
01553     typedef typename baseclass::value_type& reference;
01554     typedef ptrdiff_t difference_type;
01555 
01556     friend T1;
01557     friend container_type;
01558   private:
01559     container_type *container; 
01560     mutable size_type Findex; 
01561     node_type* node; 
01562   public:
01564     T0() {}
01565 
01567 
01570     T0(const T0 &t0){}
01571 
01573 
01576     T0(const T1 &t1){}
01577 
01579 
01585     T0(container_type *container, node_type* p){}
01586 
01588 
01593     T0(container_type *container, node_type* p, size_type index){}
01594 
01596 
01599     bool operator==(const T0& other) const{}
01600 
01602 
01605     bool operator!=(const T0& other) const{}
01606 
01608 
01611     bool operator==(const T1& other) const{}
01612 
01614 
01617     bool operator!=(const T1& other) const{}
01618 
01620 
01625     T0& operator++(){}
01626 
01628 
01633     T0 operator++(int){}
01634 
01636 
01641     T0& operator--(){}
01642 
01644 
01649     T0 operator--(int){}
01650 
01652 
01657     reference operator*() const{}
01658 
01660 
01665     pointer operator->() const{}
01666 
01668 
01671     bool operator<(const T0 &other) const{}
01672 
01674 
01677     bool operator<=(const T0 &other) const{}
01678 
01680 
01683     bool operator>(const T0 &other) const{}
01684 
01686 
01689     bool operator>=(const T0 &other) const{}
01690 
01692 
01695     bool operator<(const T1 &other) const{}
01696 
01698 
01701     bool operator<=(const T1 &other) const{}
01702 
01704 
01707     bool operator>(const T1 &other) const{}
01708 
01710 
01713     bool operator>=(const T1 &other) const{}
01714 
01716 
01720     T0 operator+(difference_type off) const{}
01721 
01723 
01727     T0 operator-(difference_type off) const{}
01728 
01730 
01734     T0& operator+=(difference_type off){}
01735 
01737 
01741     T0& operator-=(difference_type off){}
01742 
01744 
01748     difference_type operator-(const T0 &other) const{}
01749 
01751 
01755     difference_type operator-(const T1 &other) const{}
01756 
01758 
01764     int refresh(){}
01765 
01767 
01771     value_type& operator[](difference_type off) const{}
01772 
01774 
01777     size_type getIndex() const{}
01778   };
01779 
01781 
01784   class T1 : public std::iterator<std::random_access_iterator_tag, value_type, ptrdiff_t, const value_type*, const value_type&>
01785   {
01786   public:
01787     typedef std::iterator<std::random_access_iterator_tag, value_type> baseclass;
01788     typedef std::random_acces_iterator_tag iterator_category;
01789     typedef typename baseclass::value_type value_type;
01790     typedef typename const baseclass::value_type* pointer;
01791     typedef typename const baseclass::value_type& reference;
01792     typedef ptrdiff_t difference_type;
01793 
01794     friend T0;
01795     friend container_type;
01796   private:
01797     const container_type *container; 
01798     mutable size_type Findex; 
01799     const node_type* node; 
01800   public:
01802     T1() {}
01803 
01805 
01808     T1(const T1 &t1){}
01809 
01811 
01814     T1(const T0 &t0){}
01815 
01817 
01823     T1(container_type *container, node_type* p){}
01824 
01826 
01831     T1(container_type *container, node_type* p, size_type index){}
01832 
01834 
01837     bool operator==(const T0& other) const{}
01838 
01840 
01843     bool operator!=(const T0& other) const{}
01844 
01846 
01849     bool operator==(const T1& other) const{}
01850 
01852 
01855     bool operator!=(const T1& other) const{}
01856 
01858 
01863     T1& operator++(){}
01864 
01866 
01871     T1 operator++(int){}
01872 
01874 
01879     T1& operator--(){}
01880 
01882 
01887     T1 operator--(int){}
01888 
01890 
01895     reference operator*() const{}
01896 
01898 
01903     pointer operator->() const{}
01904 
01906 
01909     bool operator<(const T0 &other) const{}
01910 
01912 
01915     bool operator<=(const T0 &other) const{}
01916 
01918 
01921     bool operator>(const T0 &other) const{}
01922 
01924 
01927     bool operator>=(const T0 &other) const{}
01928 
01930 
01933     bool operator<(const T1 &other) const{}
01934 
01936 
01939     bool operator<=(const T1 &other) const{}
01940 
01942 
01945     bool operator>(const T1 &other) const{}
01946 
01948 
01951     bool operator>=(const T1 &other) const{}
01952 
01954 
01958     T1 operator+(difference_type off) const{}
01959 
01961 
01965     T1 operator-(difference_type off) const{}
01966 
01968 
01972     T1& operator+=(difference_type off){}
01973 
01975 
01979     T1& operator-=(difference_type off){}
01980 
01982 
01986     difference_type operator-(const T0 &other) const{}
01987 
01989 
01993     difference_type operator-(const T1 &other) const{}
01994 
01996 
02002     int refresh(){}
02003 
02005 
02009     value_type& operator[](difference_type off) const{}
02010 
02012 
02015     size_type getIndex() const{}
02016 
02017   };
02018 
02019 
02021 
02025   MultiAutoAccessSSkipList(){}
02026 
02028 
02034   explicit MultiAutoAccessSSkipList(size_type maxNodes){}
02035 
02037 
02041   MultiAutoAccessSSkipList(double probability, unsigned int maxLevel){}
02042 
02044 
02049   MultiAutoAccessSSkipList(const container_type &source){}
02050 
02052 
02059   template<class InIt> MultiAutoAccessSSkipList(InIt first, InIt last){}
02060 
02062 
02068   template<class InIt> MultiAutoAccessSSkipList(InIt first, InIt last, double probability, unsigned int maxLevel){}
02069 
02071 
02079   template<class InIt> MultiAutoAccessSSkipList(InIt first, InIt last, size_type maxNodes){}
02080 
02082 
02088   explicit MultiAutoAccessSSkipList(const key_compare& comp){}
02089 
02091 
02099   template<class InIt> MultiAutoAccessSSkipList(InIt first, InIt last, const key_compare& comp){}
02100 
02102 
02109   template<class InIt> MultiAutoAccessSSkipList(InIt first, InIt last, const key_compare& comp, double probability, unsigned int maxLevel){}
02110 
02112 
02121   template<class InIt> MultiAutoAccessSSkipList(InIt first, InIt last, const key_compare& comp, size_type maxNodes) : Compare(comp){}
02122 
02124 
02127   ~MultiAutoAccessSSkipList(){}
02128 
02129 
02131 
02137   container_type& operator=(const container_type &source){}
02138 
02140 
02143   iterator begin(){}
02144 
02146 
02149   iterator end(){}
02150 
02152 
02155   const_iterator begin() const{}
02156 
02158 
02161   const_iterator end() const{}
02162 
02164 
02167   reverse_iterator rbegin(){}
02168 
02170 
02173   reverse_iterator rend(){}
02174 
02176 
02179   const_reverse_iterator rbegin() const{}
02180 
02182 
02185   const_reverse_iterator rend() const{}
02186 
02188 
02191   size_type size() const{}
02192 
02194 
02197   bool empty() const{}
02198 
02200 
02203   reference front(){}
02204 
02206 
02209   const_reference front() const{}
02210 
02212 
02215   reference back(){}
02216 
02218 
02221   const_reference back() const{}
02222 
02224   void pop_front(){}
02225 
02227   void destroy_front(){}
02228 
02230   void pop_back(){}
02231 
02233   void destroy_back(){}
02234 
02236 
02240   template<class InIt> void assign(InIt first, InIt last){}
02241 
02243 
02247   iterator insert(const value_type& val){}
02248 
02250 
02256   iterator insert(const iterator &where, const value_type& val) {}
02257 
02259 
02263   template<class InIt> void insert(InIt first, InIt last) {}
02264 
02266   void clear(){}
02267 
02269   void destroy(){}
02270 
02272   iterator erase(const iterator &where){}
02273 
02275   iterator destroy(const iterator &where){}
02276 
02278 
02285   iterator erase(const iterator &first, const iterator &last){}
02286 
02288 
02295   iterator destroy(const iterator &first, const iterator &last){}
02296 
02298 
02302   size_type erase(const key_type &keyval){}
02303 
02305 
02309   size_type destroy(const key_type &keyval){}
02310 
02312 
02316   iterator erase_index(size_type index);
02317 
02319 
02323   iterator destroy_index(size_type index);
02324 
02326 
02329   void swap(container_type& right) {}
02330 
02332 
02335   template<class Pr1> void erase_if(Pr1 pred);
02336 
02338 
02341   template<class Pr4> void destroy_if(Pr4 pred);
02342 
02344 
02355   void cut(const iterator &first, const iterator &last, container_type& right);
02356 
02358 
02364   mapped_type_reference operator[](size_type index){}
02365 
02367 
02373   const_mapped_type_reference operator[](size_type index) const{}
02374 
02376 
02382   mapped_type_reference at(size_type off){}
02383 
02385 
02391   const_mapped_type_reference at(size_type off) const{}
02392 
02394   key_compare key_comp() const { }
02395 
02397   value_compare value_comp() const { }
02398 
02400   size_type max_size() const{}
02401 
02403 
02410   const key_type& key(const value_type& value) const {}
02411 
02413 
02420   mapped_type& value(value_type& value) {}
02421 
02423 
02427   iterator find(const key_type& keyval) {}
02428 
02430 
02434   const_iterator find(const key_type& keyval) const {}
02435 
02437 
02441   size_type count(const key_type& keyval) const {}
02442 
02443 
02445 
02449   iterator lower_bound(const key_type& keyval) {}
02450 
02452 
02456   const_iterator lower_bound(const key_type& keyval) const {}
02457 
02459 
02463   iterator upper_bound(const key_type& keyval) {}
02464 
02466 
02470   const_iterator upper_bound(const key_type& keyval) const {}
02471 
02473 
02477   ipair equal_range(const key_type& keyval) {}
02478 
02480 
02484   const_ipair equal_range(const key_type& keyval) const {}
02485 };
02486 
02488 
02493 template <class K, class T, class Pr, class R>
02494 bool operator==(const MultiAutoAccessSSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSSkipList<K,T,A,Pr,R> &right)
02495 {
02496   return ((left.size() == right.size()) &&
02497           (std::equal(left.begin(), left.end(), right.begin())));
02498 }
02499 
02501 
02506 template <class K, class T, class Pr, class R>
02507 bool operator!=(const MultiAutoAccessSSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSSkipList<K,T,A,Pr,R> &right)
02508 {
02509   return !(left==right);
02510 }
02511 
02513 
02518 template <class K, class T, class Pr, class R>
02519 bool operator<(const MultiAutoAccessSSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSSkipList<K,T,A,Pr,R> &right)
02520 {
02521   return lexicographical_compare(left.begin(),left.end(),right.begin(),right.end(),left.value_comp());
02522 }
02523 
02525 
02530 template <class K, class T, class Pr, class R>
02531 bool operator<=(const MultiAutoAccessSSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSSkipList<K,T,A,Pr,R> &right)
02532 {
02533   return !(right < left);
02534 }
02535 
02537 
02542 template <class K, class T, class Pr, class R>
02543 bool operator>(const MultiAutoAccessSSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSSkipList<K,T,A,Pr,R> &right)
02544 {
02545   return (right < left);
02546 }
02547 
02549 
02554 template <class K, class T, class Pr, class R>
02555 bool operator>=(const MultiAutoAccessSSkipList<K,T,A,Pr,R> &left, const MultiAutoAccessSSkipList<K,T,A,Pr,R> &right)
02556 {
02557   return !(left < right);
02558 }
02559 
02560 
02561 /*#define csarg1 template <class T, class Pr, class R>
02562 #define csarg2 MultiAutoAccessSSkipList<K,T,A,Pr,R>
02563 CSDefineCompOps(csarg1, csarg2)
02564 #undef csarg1
02565 #undef csarg2
02566 */
 All Classes Files Functions Variables Typedefs