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
01295
01296
01297
01298
01299
01300
01301
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
02546
02547
02548
02549
02550