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
01303
01304
01305
01306
01307
01308
01309
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
02562
02563
02564
02565
02566