ReactOS  0.4.13-dev-563-g0561610
_map.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 1994
4  * Hewlett-Packard Company
5  *
6  * Copyright (c) 1996,1997
7  * Silicon Graphics Computer Systems, Inc.
8  *
9  * Copyright (c) 1997
10  * Moscow Center for SPARC Technology
11  *
12  * Copyright (c) 1999
13  * Boris Fomitchev
14  *
15  * This material is provided "as is", with absolutely no warranty expressed
16  * or implied. Any use is at your own risk.
17  *
18  * Permission to use or copy this software for any purpose is hereby granted
19  * without fee, provided the above notices are retained on all copies.
20  * Permission to modify the code and to distribute modified code is granted,
21  * provided the above notices are retained, and a notice that the code was
22  * modified is included with the above copyright notice.
23  *
24  */
25 
26 /* NOTE: This is an internal header file, included by other STL headers.
27  * You should not attempt to use it directly.
28  */
29 
30 #ifndef _STLP_INTERNAL_MAP_H
31 #define _STLP_INTERNAL_MAP_H
32 
33 #ifndef _STLP_INTERNAL_TREE_H
34 # include <stl/_tree.h>
35 #endif
36 
38 
39 //Specific iterator traits creation
40 _STLP_CREATE_ITERATOR_TRAITS(MapTraitsT, traits)
41 
42 template <class _Key, class _Tp, _STLP_DFL_TMPL_PARAM(_Compare, less<_Key> ),
43  _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_STLP_CONST _Key, _Tp) >
44 class map
45 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
46  : public __stlport_class<map<_Key, _Tp, _Compare, _Alloc> >
47 #endif
48 {
50 public:
51 
52 // typedefs:
53 
54  typedef _Key key_type;
55  typedef _Tp data_type;
56  typedef _Tp mapped_type;
58  typedef _Compare key_compare;
59 
61  : public binary_function<value_type, value_type, bool> {
62  friend class map<_Key,_Tp,_Compare,_Alloc>;
63  protected :
64  //c is a Standard name (23.3.1), do no make it STLport naming convention compliant.
65  _Compare comp;
66  value_compare(_Compare __c) : comp(__c) {}
67  public:
68  bool operator()(const value_type& __x, const value_type& __y) const
69  { return comp(__x.first, __y.first); }
70  };
71 
72 protected:
73  typedef _STLP_PRIV _MapTraitsT<value_type> _MapTraits;
74 
75 public:
76  //Following typedef have to be public for __move_traits specialization.
80 
81  typedef typename _Rep_type::pointer pointer;
82  typedef typename _Rep_type::const_pointer const_pointer;
83  typedef typename _Rep_type::reference reference;
84  typedef typename _Rep_type::const_reference const_reference;
85  typedef typename _Rep_type::iterator iterator;
86  typedef typename _Rep_type::const_iterator const_iterator;
88  typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
89  typedef typename _Rep_type::size_type size_type;
90  typedef typename _Rep_type::difference_type difference_type;
91  typedef typename _Rep_type::allocator_type allocator_type;
92 
93 private:
94  _Rep_type _M_t; // red-black tree representing map
96 
97 public:
98  // allocation/deallocation
99  map() : _M_t(_Compare(), allocator_type()) {}
100 #if !defined (_STLP_DONT_SUP_DFLT_PARAM)
101  explicit map(const _Compare& __comp,
102  const allocator_type& __a = allocator_type())
103 #else
104  explicit map(const _Compare& __comp)
105  : _M_t(__comp, allocator_type()) {}
106  explicit map(const _Compare& __comp, const allocator_type& __a)
107 #endif
108  : _M_t(__comp, __a) {}
109 
110 #if defined (_STLP_MEMBER_TEMPLATES)
111  template <class _InputIterator>
112  map(_InputIterator __first, _InputIterator __last)
113  : _M_t(_Compare(), allocator_type())
114  { _M_t.insert_unique(__first, __last); }
115 
116  template <class _InputIterator>
117  map(_InputIterator __first, _InputIterator __last, const _Compare& __comp,
119  : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
120 
121 # if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
122  template <class _InputIterator>
123  map(_InputIterator __first, _InputIterator __last, const _Compare& __comp)
124  : _M_t(__comp, allocator_type()) { _M_t.insert_unique(__first, __last); }
125 # endif
126 
127 #else
128  map(const value_type* __first, const value_type* __last)
129  : _M_t(_Compare(), allocator_type())
130  { _M_t.insert_unique(__first, __last); }
131 
132  map(const value_type* __first,
133  const value_type* __last, const _Compare& __comp,
134  const allocator_type& __a = allocator_type())
135  : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
136 
138  : _M_t(_Compare(), allocator_type())
139  { _M_t.insert_unique(__first, __last); }
140 
141  map(const_iterator __first, const_iterator __last, const _Compare& __comp,
142  const allocator_type& __a = allocator_type())
143  : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
144 #endif /* _STLP_MEMBER_TEMPLATES */
145 
146  map(const _Self& __x) : _M_t(__x._M_t) {}
147 
148 #if !defined (_STLP_NO_MOVE_SEMANTIC)
151 #endif
152 
153  _Self& operator=(const _Self& __x) {
154  _M_t = __x._M_t;
155  return *this;
156  }
157 
158  // accessors:
159  key_compare key_comp() const { return _M_t.key_comp(); }
160  value_compare value_comp() const { return value_compare(_M_t.key_comp()); }
161  allocator_type get_allocator() const { return _M_t.get_allocator(); }
162 
163  iterator begin() { return _M_t.begin(); }
164  const_iterator begin() const { return _M_t.begin(); }
165  iterator end() { return _M_t.end(); }
166  const_iterator end() const { return _M_t.end(); }
167  reverse_iterator rbegin() { return _M_t.rbegin(); }
168  const_reverse_iterator rbegin() const { return _M_t.rbegin(); }
169  reverse_iterator rend() { return _M_t.rend(); }
170  const_reverse_iterator rend() const { return _M_t.rend(); }
171  bool empty() const { return _M_t.empty(); }
172  size_type size() const { return _M_t.size(); }
173  size_type max_size() const { return _M_t.max_size(); }
175  _Tp& operator[](const _KT& __k) {
176  iterator __i = lower_bound(__k);
177  // __i->first is greater than or equivalent to __k.
178  if (__i == end() || key_comp()(__k, (*__i).first))
179  __i = insert(__i, value_type(__k, _STLP_DEFAULT_CONSTRUCTED(_Tp)));
180  return (*__i).second;
181  }
182  void swap(_Self& __x) { _M_t.swap(__x._M_t); }
183 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
184  void _M_swap_workaround(_Self& __x) { swap(__x); }
185 #endif
186 
187  // insert/erase
189  { return _M_t.insert_unique(__x); }
190  iterator insert(iterator __pos, const value_type& __x)
191  { return _M_t.insert_unique(__pos, __x); }
192 #ifdef _STLP_MEMBER_TEMPLATES
193  template <class _InputIterator>
194  void insert(_InputIterator __first, _InputIterator __last)
195  { _M_t.insert_unique(__first, __last); }
196 #else
197  void insert(const value_type* __first, const value_type* __last)
198  { _M_t.insert_unique(__first, __last); }
200  { _M_t.insert_unique(__first, __last); }
201 #endif /* _STLP_MEMBER_TEMPLATES */
202 
203  void erase(iterator __pos) { _M_t.erase(__pos); }
204  size_type erase(const key_type& __x) { return _M_t.erase_unique(__x); }
205  void erase(iterator __first, iterator __last) { _M_t.erase(__first, __last); }
206  void clear() { _M_t.clear(); }
207 
208  // map operations:
210  iterator find(const _KT& __x) { return _M_t.find(__x); }
212  const_iterator find(const _KT& __x) const { return _M_t.find(__x); }
214  size_type count(const _KT& __x) const { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
216  iterator lower_bound(const _KT& __x) { return _M_t.lower_bound(__x); }
218  const_iterator lower_bound(const _KT& __x) const { return _M_t.lower_bound(__x); }
220  iterator upper_bound(const _KT& __x) { return _M_t.upper_bound(__x); }
222  const_iterator upper_bound(const _KT& __x) const { return _M_t.upper_bound(__x); }
223 
226  { return _M_t.equal_range_unique(__x); }
229  { return _M_t.equal_range_unique(__x); }
230 };
231 
232 //Specific iterator traits creation
233 _STLP_CREATE_ITERATOR_TRAITS(MultimapTraitsT, traits)
234 
235 template <class _Key, class _Tp, _STLP_DFL_TMPL_PARAM(_Compare, less<_Key> ),
236  _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_STLP_CONST _Key, _Tp) >
237 class multimap
238 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
239  : public __stlport_class<multimap<_Key, _Tp, _Compare, _Alloc> >
240 #endif
241 {
243 public:
244 
245 // typedefs:
246 
247  typedef _Key key_type;
248  typedef _Tp data_type;
249  typedef _Tp mapped_type;
251  typedef _Compare key_compare;
252 
253  class value_compare : public binary_function<value_type, value_type, bool> {
254  friend class multimap<_Key,_Tp,_Compare,_Alloc>;
255  protected:
256  //comp is a Standard name (23.3.2), do no make it STLport naming convention compliant.
257  _Compare comp;
258  value_compare(_Compare __c) : comp(__c) {}
259  public:
260  bool operator()(const value_type& __x, const value_type& __y) const
261  { return comp(__x.first, __y.first); }
262  };
263 
264 protected:
265  //Specific iterator traits creation
266  typedef _STLP_PRIV _MultimapTraitsT<value_type> _MultimapTraits;
267 
268 public:
269  //Following typedef have to be public for __move_traits specialization.
273 
274  typedef typename _Rep_type::pointer pointer;
275  typedef typename _Rep_type::const_pointer const_pointer;
276  typedef typename _Rep_type::reference reference;
277  typedef typename _Rep_type::const_reference const_reference;
278  typedef typename _Rep_type::iterator iterator;
279  typedef typename _Rep_type::const_iterator const_iterator;
281  typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
282  typedef typename _Rep_type::size_type size_type;
283  typedef typename _Rep_type::difference_type difference_type;
284  typedef typename _Rep_type::allocator_type allocator_type;
285 
286 private:
287  _Rep_type _M_t; // red-black tree representing multimap
289 
290 public:
291  // allocation/deallocation
292  multimap() : _M_t(_Compare(), allocator_type()) { }
293  explicit multimap(const _Compare& __comp,
294  const allocator_type& __a = allocator_type())
295  : _M_t(__comp, __a) { }
296 
297 #ifdef _STLP_MEMBER_TEMPLATES
298  template <class _InputIterator>
299  multimap(_InputIterator __first, _InputIterator __last)
300  : _M_t(_Compare(), allocator_type())
301  { _M_t.insert_equal(__first, __last); }
302 # ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
303  template <class _InputIterator>
304  multimap(_InputIterator __first, _InputIterator __last,
305  const _Compare& __comp)
306  : _M_t(__comp, allocator_type()) { _M_t.insert_equal(__first, __last); }
307 # endif
308  template <class _InputIterator>
309  multimap(_InputIterator __first, _InputIterator __last,
310  const _Compare& __comp,
312  : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
313 #else
314  multimap(const value_type* __first, const value_type* __last)
315  : _M_t(_Compare(), allocator_type())
316  { _M_t.insert_equal(__first, __last); }
317  multimap(const value_type* __first, const value_type* __last,
318  const _Compare& __comp,
319  const allocator_type& __a = allocator_type())
320  : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
321 
323  : _M_t(_Compare(), allocator_type())
324  { _M_t.insert_equal(__first, __last); }
326  const _Compare& __comp,
327  const allocator_type& __a = allocator_type())
328  : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
329 #endif /* _STLP_MEMBER_TEMPLATES */
330 
331  multimap(const _Self& __x) : _M_t(__x._M_t) {}
332 
333 #if !defined (_STLP_NO_MOVE_SEMANTIC)
336 #endif
337 
338  _Self& operator=(const _Self& __x) {
339  _M_t = __x._M_t;
340  return *this;
341  }
342 
343  // accessors:
344 
345  key_compare key_comp() const { return _M_t.key_comp(); }
346  value_compare value_comp() const { return value_compare(_M_t.key_comp()); }
347  allocator_type get_allocator() const { return _M_t.get_allocator(); }
348 
349  iterator begin() { return _M_t.begin(); }
350  const_iterator begin() const { return _M_t.begin(); }
351  iterator end() { return _M_t.end(); }
352  const_iterator end() const { return _M_t.end(); }
353  reverse_iterator rbegin() { return _M_t.rbegin(); }
354  const_reverse_iterator rbegin() const { return _M_t.rbegin(); }
355  reverse_iterator rend() { return _M_t.rend(); }
356  const_reverse_iterator rend() const { return _M_t.rend(); }
357  bool empty() const { return _M_t.empty(); }
358  size_type size() const { return _M_t.size(); }
359  size_type max_size() const { return _M_t.max_size(); }
360  void swap(_Self& __x) { _M_t.swap(__x._M_t); }
361 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
362  void _M_swap_workaround(_Self& __x) { swap(__x); }
363 #endif
364 
365  // insert/erase
366  iterator insert(const value_type& __x) { return _M_t.insert_equal(__x); }
367  iterator insert(iterator __pos, const value_type& __x) { return _M_t.insert_equal(__pos, __x); }
368 #if defined (_STLP_MEMBER_TEMPLATES)
369  template <class _InputIterator>
370  void insert(_InputIterator __first, _InputIterator __last)
371  { _M_t.insert_equal(__first, __last); }
372 #else
373  void insert(const value_type* __first, const value_type* __last)
374  { _M_t.insert_equal(__first, __last); }
376  { _M_t.insert_equal(__first, __last); }
377 #endif /* _STLP_MEMBER_TEMPLATES */
378  void erase(iterator __pos) { _M_t.erase(__pos); }
379  size_type erase(const key_type& __x) { return _M_t.erase(__x); }
380  void erase(iterator __first, iterator __last) { _M_t.erase(__first, __last); }
381  void clear() { _M_t.clear(); }
382 
383  // multimap operations:
384 
386  iterator find(const _KT& __x) { return _M_t.find(__x); }
388  const_iterator find(const _KT& __x) const { return _M_t.find(__x); }
390  size_type count(const _KT& __x) const { return _M_t.count(__x); }
392  iterator lower_bound(const _KT& __x) { return _M_t.lower_bound(__x); }
394  const_iterator lower_bound(const _KT& __x) const { return _M_t.lower_bound(__x); }
396  iterator upper_bound(const _KT& __x) { return _M_t.upper_bound(__x); }
398  const_iterator upper_bound(const _KT& __x) const { return _M_t.upper_bound(__x); }
401  { return _M_t.equal_range(__x); }
404  { return _M_t.equal_range(__x); }
405 };
406 
407 #define _STLP_TEMPLATE_HEADER template <class _Key, class _Tp, class _Compare, class _Alloc>
408 #define _STLP_TEMPLATE_CONTAINER map<_Key,_Tp,_Compare,_Alloc>
409 #include <stl/_relops_cont.h>
410 #undef _STLP_TEMPLATE_CONTAINER
411 #define _STLP_TEMPLATE_CONTAINER multimap<_Key,_Tp,_Compare,_Alloc>
412 #include <stl/_relops_cont.h>
413 #undef _STLP_TEMPLATE_CONTAINER
414 #undef _STLP_TEMPLATE_HEADER
415 
416 #if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC)
417 template <class _Key, class _Tp, class _Compare, class _Alloc>
418 struct __move_traits<map<_Key,_Tp,_Compare,_Alloc> > :
419  _STLP_PRIV __move_traits_aux<typename map<_Key,_Tp,_Compare,_Alloc>::_Rep_type>
420 {};
421 
422 template <class _Key, class _Tp, class _Compare, class _Alloc>
423 struct __move_traits<multimap<_Key,_Tp,_Compare,_Alloc> > :
424  _STLP_PRIV __move_traits_aux<typename multimap<_Key,_Tp,_Compare,_Alloc>::_Rep_type>
425 {};
426 #endif
427 
429 
430 #endif /* _STLP_INTERNAL_MAP_H */
431 
432 // Local Variables:
433 // mode:C++
434 // End:
435 
_Tp data_type
Definition: _map.h:55
_Self & operator=(const _Self &__x)
Definition: _map.h:338
multimap(const _Compare &__comp, const allocator_type &__a=allocator_type())
Definition: _map.h:293
_Tp mapped_type
Definition: _map.h:249
value_compare(_Compare __c)
Definition: _map.h:66
_STLP_TEMPLATE_FOR_CONT_EXT pair< iterator, iterator > equal_range(const _KT &__x)
Definition: _map.h:225
reverse_iterator rbegin()
Definition: _map.h:167
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator find(const _KT &__x) const
Definition: _map.h:388
allocator_type get_allocator() const
Definition: _map.h:161
_Key key_type
Definition: _map.h:247
#define _STLP_CREATE_ITERATOR_TRAITS(Motif, Traits)
const_iterator end() const
Definition: _map.h:352
multimap(const_iterator __first, const_iterator __last)
Definition: _map.h:322
_Rep_type _M_t
Definition: _map.h:287
_Tp mapped_type
Definition: _map.h:56
reverse_iterator rbegin()
Definition: _map.h:353
GLsizei const GLvoid * pointer
Definition: glext.h:5848
multimap< _Key, _Tp, _Compare, _Alloc > _Self
Definition: _map.h:242
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator upper_bound(const _KT &__x) const
Definition: _map.h:222
_STLP_TEMPLATE_FOR_CONT_EXT iterator upper_bound(const _KT &__x)
Definition: _map.h:396
#define _Alloc
Definition: _bvector.h:330
iterator insert(iterator __pos, const value_type &__x)
Definition: _map.h:190
void erase(iterator __pos)
Definition: _map.h:378
#define reverse_iterator
Definition: _abbrevs.h:34
#define _STLP_TEMPLATE_FOR_CONT_EXT
Definition: features.h:623
_Rep_type::size_type size_type
Definition: _map.h:282
_Tp data_type
Definition: _map.h:248
const_reverse_iterator rbegin() const
Definition: _map.h:354
_Rep_type::const_iterator const_iterator
Definition: _map.h:279
void clear()
Definition: _map.h:381
const_reverse_iterator rend() const
Definition: _map.h:170
_Rep_type::const_reverse_iterator const_reverse_iterator
Definition: _map.h:88
void insert(const_iterator __first, const_iterator __last)
Definition: _map.h:199
const_iterator begin() const
Definition: _map.h:164
_Compare key_compare
Definition: _map.h:58
_Rep_type::const_iterator const_iterator
Definition: _map.h:86
void erase(iterator __first, iterator __last)
Definition: _map.h:205
_STLP_TEMPLATE_FOR_CONT_EXT iterator lower_bound(const _KT &__x)
Definition: _map.h:392
#define __c
Definition: schilyio.h:209
size_type size() const
Definition: _map.h:172
void erase(iterator __first, iterator __last)
Definition: _map.h:380
_Rep_type::reference reference
Definition: _map.h:276
size_type max_size() const
Definition: _map.h:359
_STLP_TEMPLATE_FOR_CONT_EXT iterator lower_bound(const _KT &__x)
Definition: _map.h:216
allocator_type get_allocator() const
Definition: _map.h:347
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator lower_bound(const _KT &__x) const
Definition: _map.h:218
size_type size() const
Definition: _map.h:358
_STLP_TEMPLATE_FOR_CONT_EXT _Tp & operator[](const _KT &__k)
Definition: _map.h:175
value_compare(_Compare __c)
Definition: _map.h:258
_Rep_type::reference reference
Definition: _map.h:83
void swap(_Self &__x)
Definition: _map.h:360
_Key key_type
Definition: _map.h:54
map(__move_source< _Self > src)
Definition: _map.h:149
map(const_iterator __first, const_iterator __last, const _Compare &__comp, const allocator_type &__a=allocator_type())
Definition: _map.h:141
_Rep_type::pointer pointer
Definition: _map.h:81
#define _STLP_DEFAULT_CONSTRUCTED(_TTp)
Definition: _construct.h:265
pair< iterator, bool > insert(const value_type &__x)
Definition: _map.h:188
bool operator()(const value_type &__x, const value_type &__y) const
Definition: _map.h:68
iterator insert(iterator __pos, const value_type &__x)
Definition: _map.h:367
_Rep_type::const_pointer const_pointer
Definition: _map.h:82
multimap(const _Self &__x)
Definition: _map.h:331
_Compare comp
Definition: _map.h:65
_Compare key_compare
Definition: _map.h:251
_STLP_INLINE_LOOP _InputIter __last
Definition: _algo.h:68
size_type erase(const key_type &__x)
Definition: _map.h:204
_STLP_TEMPLATE_FOR_CONT_EXT iterator upper_bound(const _KT &__x)
Definition: _map.h:220
_Rep_type::size_type size_type
Definition: _map.h:89
_Rep_type::pointer pointer
Definition: _map.h:274
_T1 first
Definition: _pair.h:51
void erase(iterator __pos)
Definition: _map.h:203
bool operator()(const value_type &__x, const value_type &__y) const
Definition: _map.h:260
key_compare key_comp() const
Definition: _map.h:345
void get(int argc, const char *argv[])
Definition: cmds.c:480
_Rep_type::const_pointer const_pointer
Definition: _map.h:275
if(!(yy_init))
Definition: macro.lex.yy.c:714
iterator end()
Definition: _map.h:351
bool empty() const
Definition: _map.h:357
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator upper_bound(const _KT &__x) const
Definition: _map.h:398
map(const_iterator __first, const_iterator __last)
Definition: _map.h:137
value_compare value_comp() const
Definition: _map.h:346
#define _STLP_ALLOCATOR_TYPE_DFL
Definition: features.h:691
value_compare value_comp() const
Definition: _map.h:160
reverse_iterator rend()
Definition: _map.h:355
pair< _STLP_CONST _Key, _Tp > value_type
Definition: _map.h:57
map(const value_type *__first, const value_type *__last)
Definition: _map.h:128
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator find(const _KT &__x) const
Definition: _map.h:212
Definition: _map.h:44
static BOOL protected
Definition: protectdata.c:37
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__x) const
Definition: _map.h:390
void clear()
Definition: _map.h:206
_Rep_type::const_reverse_iterator const_reverse_iterator
Definition: _map.h:281
_STLP_PRIV _MultimapTraitsT< value_type > _MultimapTraits
Definition: _map.h:266
Definition: _map.h:237
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__x)
Definition: _map.h:210
GLint reference
Definition: glext.h:11729
#define _STLP_PRIV
Definition: _dm.h:70
_Rep_type::const_reference const_reference
Definition: _map.h:277
const_reverse_iterator rbegin() const
Definition: _map.h:168
_STLP_TEMPLATE_FOR_CONT_EXT pair< const_iterator, const_iterator > equal_range(const _KT &__x) const
Definition: _map.h:228
map()
Definition: _map.h:99
GLenum src
Definition: glext.h:6340
iterator begin()
Definition: _map.h:349
_Self & operator=(const _Self &__x)
Definition: _map.h:153
#define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
Definition: features.h:622
void insert(const value_type *__first, const value_type *__last)
Definition: _map.h:197
_Rep_type::difference_type difference_type
Definition: _map.h:283
_Rep_type::iterator iterator
Definition: _map.h:278
void insert(const_iterator __first, const_iterator __last)
Definition: _map.h:375
void insert(const value_type *__first, const value_type *__last)
Definition: _map.h:373
multimap(__move_source< _Self > src)
Definition: _map.h:334
#define _STLP_SELECT1ST(__x, __y)
_Rep_type::reverse_iterator reverse_iterator
Definition: _map.h:280
iterator insert(const value_type &__x)
Definition: _map.h:366
map(const _Compare &__comp, const allocator_type &__a=allocator_type())
Definition: _map.h:101
_Rep_type::reverse_iterator reverse_iterator
Definition: _map.h:87
const_iterator begin() const
Definition: _map.h:350
_STLP_TEMPLATE_FOR_CONT_EXT pair< const_iterator, const_iterator > equal_range(const _KT &__x) const
Definition: _map.h:403
multimap(const value_type *__first, const value_type *__last)
Definition: _map.h:314
bool empty() const
Definition: _map.h:171
#define _STLP_END_NAMESPACE
Definition: features.h:503
multimap(const value_type *__first, const value_type *__last, const _Compare &__comp, const allocator_type &__a=allocator_type())
Definition: _map.h:317
Definition: _pair.h:47
_STLP_PRIV _Rb_tree< key_type, key_compare, value_type, _STLP_SELECT1ST(value_type, _Key), _MultimapTraits, _Alloc > _Rep_type
Definition: _map.h:272
_Rep_type _M_t
Definition: _map.h:94
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__x) const
Definition: _map.h:214
const_reverse_iterator rend() const
Definition: _map.h:356
pair< _STLP_CONST _Key, _Tp > value_type
Definition: _map.h:250
_Rep_type::allocator_type allocator_type
Definition: _map.h:284
_Rep_type::difference_type difference_type
Definition: _map.h:90
map< _Key, _Tp, _Compare, _Alloc > _Self
Definition: _map.h:49
void swap(_Self &__x)
Definition: _map.h:182
_STLP_PRIV _MapTraitsT< value_type > _MapTraits
Definition: _map.h:73
_STLP_PRIV _Rb_tree< key_type, key_compare, value_type, _STLP_SELECT1ST(value_type, _Key), _MapTraits, _Alloc > _Rep_type
Definition: _map.h:79
#define _STLP_BEGIN_NAMESPACE
Definition: features.h:501
_Rep_type::allocator_type allocator_type
Definition: _map.h:91
multimap(const_iterator __first, const_iterator __last, const _Compare &__comp, const allocator_type &__a=allocator_type())
Definition: _map.h:325
const_iterator end() const
Definition: _map.h:166
iterator begin()
Definition: _map.h:163
reverse_iterator rend()
Definition: _map.h:169
size_type erase(const key_type &__x)
Definition: _map.h:379
size_type max_size() const
Definition: _map.h:173
map(const _Self &__x)
Definition: _map.h:146
multimap()
Definition: _map.h:292
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__x)
Definition: _map.h:386
key_compare key_comp() const
Definition: _map.h:159
_Rep_type::iterator iterator
Definition: _map.h:85
map(const value_type *__first, const value_type *__last, const _Compare &__comp, const allocator_type &__a=allocator_type())
Definition: _map.h:132
_Rep_type::const_reference const_reference
Definition: _map.h:84
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator lower_bound(const _KT &__x) const
Definition: _map.h:394
_STLP_TEMPLATE_FOR_CONT_EXT pair< iterator, iterator > equal_range(const _KT &__x)
Definition: _map.h:400
iterator end()
Definition: _map.h:165