This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
Copies the range [first,first+count) into [result,result+count).
This is an SGI extension. This inline function will boil down to a call to memmove
whenever possible. Failing that, if random access iterators are passed, then the loop count will be known (and therefore a candidate for compiler optimizations such as unrolling).
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
Find the median of three values.
Find the median of three values using a predicate for comparison.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
Copies the range [first,last) into result.
Like copy(), but does not require an initialized output range.
This class provides similar behavior and semantics of the standard functions get_temporary_buffer() and return_temporary_buffer(), but encapsulated in a type vaguely resembling a standard container.
By default, a temporary_buffer<Iter> stores space for objects of whatever type the Iter iterator points to. It is constructed from a typical [first,last) range, and provides the begin(), end(), size() functions, as well as requested_size(). For non-trivial types, copies of *first will be used to initialize the storage.
Like get_temporary_buffer(), not all the requested memory may be available. Ideally, the created buffer will be large enough to hold a copy of [first,last), but if size() is less than requested_size(), then this didn't happen.
Requests storage large enough to hold a copy of [first,last).
Destroys objects and frees storage.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
This is an SGI extension.
69 _GLIBCXX_BEGIN_NAMESPACE_VERSION
74 using std::_Select1st;
81 template<
class _Key,
class _Tp,
class _HashFn = hash<_Key>,
82 class _EqualKey = equal_to<_Key>,
class _Alloc = allocator<_Tp> >
86 typedef hashtable<pair<const _Key, _Tp>,_Key, _HashFn,
87 _Select1st<pair<const _Key, _Tp> >,
88 _EqualKey, _Alloc> _Ht;
93 typedef typename _Ht::key_type key_type;
94 typedef _Tp data_type;
95 typedef _Tp mapped_type;
96 typedef typename _Ht::value_type value_type;
97 typedef typename _Ht::hasher hasher;
98 typedef typename _Ht::key_equal key_equal;
100 typedef typename _Ht::size_type size_type;
101 typedef typename _Ht::difference_type difference_type;
102 typedef typename _Ht::pointer pointer;
103 typedef typename _Ht::const_pointer const_pointer;
104 typedef typename _Ht::reference reference;
105 typedef typename _Ht::const_reference const_reference;
107 typedef typename _Ht::iterator iterator;
108 typedef typename _Ht::const_iterator const_iterator;
110 typedef typename _Ht::allocator_type allocator_type;
114 {
return _M_ht.hash_funct(); }
118 {
return _M_ht.key_eq(); }
121 get_allocator()
const
122 {
return _M_ht.get_allocator(); }
125 : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
128 hash_map(size_type __n)
129 : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
131 hash_map(size_type __n,
const hasher& __hf)
132 : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
134 hash_map(size_type __n,
const hasher& __hf,
const key_equal& __eql,
135 const allocator_type& __a = allocator_type())
136 : _M_ht(__n, __hf, __eql, __a) {}
138 template<
class _InputIterator>
139 hash_map(_InputIterator __f, _InputIterator __l)
140 : _M_ht(100, hasher(), key_equal(), allocator_type())
141 { _M_ht.insert_unique(__f, __l); }
143 template<
class _InputIterator>
144 hash_map(_InputIterator __f, _InputIterator __l, size_type __n)
145 : _M_ht(__n, hasher(), key_equal(), allocator_type())
146 { _M_ht.insert_unique(__f, __l); }
148 template<
class _InputIterator>
149 hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
151 : _M_ht(__n, __hf, key_equal(), allocator_type())
152 { _M_ht.insert_unique(__f, __l); }
154 template<
class _InputIterator>
155 hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
156 const hasher& __hf,
const key_equal& __eql,
157 const allocator_type& __a = allocator_type())
158 : _M_ht(__n, __hf, __eql, __a)
159 { _M_ht.insert_unique(__f, __l); }
163 {
return _M_ht.size(); }
167 {
return _M_ht.max_size(); }
171 {
return _M_ht.empty(); }
175 { _M_ht.swap(__hs._M_ht); }
177 template<
class _K1,
class _T1,
class _HF,
class _EqK,
class _Al>
179 operator== (
const hash_map<_K1, _T1, _HF, _EqK, _Al>&,
180 const hash_map<_K1, _T1, _HF, _EqK, _Al>&);
184 {
return _M_ht.begin(); }
188 {
return _M_ht.end(); }
192 {
return _M_ht.begin(); }
196 {
return _M_ht.end(); }
199 insert(
const value_type& __obj)
200 {
return _M_ht.insert_unique(__obj); }
202 template<
class _InputIterator>
204 insert(_InputIterator __f, _InputIterator __l)
205 { _M_ht.insert_unique(__f, __l); }
208 insert_noresize(
const value_type& __obj)
209 {
return _M_ht.insert_unique_noresize(__obj); }
212 find(
const key_type& __key)
213 {
return _M_ht.find(__key); }
216 find(
const key_type& __key)
const
217 {
return _M_ht.find(__key); }
220 operator[](
const key_type& __key)
221 {
return _M_ht.find_or_insert(value_type(__key, _Tp())).second; }
224 count(
const key_type& __key)
const
225 {
return _M_ht.count(__key); }
227 pair<iterator, iterator>
228 equal_range(
const key_type& __key)
229 {
return _M_ht.equal_range(__key); }
231 pair<const_iterator, const_iterator>
232 equal_range(
const key_type& __key)
const
233 {
return _M_ht.equal_range(__key); }
236 erase(
const key_type& __key)
237 {
return _M_ht.erase(__key); }
241 { _M_ht.erase(__it); }
244 erase(iterator __f, iterator __l)
245 { _M_ht.erase(__f, __l); }
252 resize(size_type __hint)
253 { _M_ht.resize(__hint); }
257 {
return _M_ht.bucket_count(); }
260 max_bucket_count()
const
261 {
return _M_ht.max_bucket_count(); }
264 elems_in_bucket(size_type __n)
const
265 {
return _M_ht.elems_in_bucket(__n); }
268 template<
class _Key,
class _Tp,
class _HashFn,
class _EqlKey,
class _Alloc>
270 operator==(
const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1,
271 const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
272 {
return __hm1._M_ht == __hm2._M_ht; }
274 template<
class _Key,
class _Tp,
class _HashFn,
class _EqlKey,
class _Alloc>
276 operator!=(
const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1,
277 const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
278 {
return !(__hm1 == __hm2); }
280 template<
class _Key,
class _Tp,
class _HashFn,
class _EqlKey,
class _Alloc>
282 swap(hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1,
283 hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
284 { __hm1.swap(__hm2); }
292 template<
class _Key,
class _Tp,
293 class _HashFn = hash<_Key>,
294 class _EqualKey = equal_to<_Key>,
295 class _Alloc = allocator<_Tp> >
305 typedef hashtable<pair<const _Key, _Tp>, _Key, _HashFn,
306 _Select1st<pair<const _Key, _Tp> >, _EqualKey, _Alloc>
312 typedef typename _Ht::key_type key_type;
313 typedef _Tp data_type;
314 typedef _Tp mapped_type;
315 typedef typename _Ht::value_type value_type;
316 typedef typename _Ht::hasher hasher;
317 typedef typename _Ht::key_equal key_equal;
319 typedef typename _Ht::size_type size_type;
320 typedef typename _Ht::difference_type difference_type;
321 typedef typename _Ht::pointer pointer;
322 typedef typename _Ht::const_pointer const_pointer;
323 typedef typename _Ht::reference reference;
324 typedef typename _Ht::const_reference const_reference;
326 typedef typename _Ht::iterator iterator;
327 typedef typename _Ht::const_iterator const_iterator;
329 typedef typename _Ht::allocator_type allocator_type;
333 {
return _M_ht.hash_funct(); }
337 {
return _M_ht.key_eq(); }
340 get_allocator()
const
341 {
return _M_ht.get_allocator(); }
344 : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
347 hash_multimap(size_type __n)
348 : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
350 hash_multimap(size_type __n,
const hasher& __hf)
351 : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
353 hash_multimap(size_type __n,
const hasher& __hf,
const key_equal& __eql,
354 const allocator_type& __a = allocator_type())
355 : _M_ht(__n, __hf, __eql, __a) {}
357 template<
class _InputIterator>
358 hash_multimap(_InputIterator __f, _InputIterator __l)
359 : _M_ht(100, hasher(), key_equal(), allocator_type())
360 { _M_ht.insert_equal(__f, __l); }
362 template<
class _InputIterator>
363 hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n)
364 : _M_ht(__n, hasher(), key_equal(), allocator_type())
365 { _M_ht.insert_equal(__f, __l); }
367 template<
class _InputIterator>
368 hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
370 : _M_ht(__n, __hf, key_equal(), allocator_type())
371 { _M_ht.insert_equal(__f, __l); }
373 template<
class _InputIterator>
374 hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
375 const hasher& __hf,
const key_equal& __eql,
376 const allocator_type& __a = allocator_type())
377 : _M_ht(__n, __hf, __eql, __a)
378 { _M_ht.insert_equal(__f, __l); }
382 {
return _M_ht.size(); }
386 {
return _M_ht.max_size(); }
390 {
return _M_ht.empty(); }
393 swap(hash_multimap& __hs)
394 { _M_ht.swap(__hs._M_ht); }
396 template<
class _K1,
class _T1,
class _HF,
class _EqK,
class _Al>
398 operator==(
const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&,
399 const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&);
403 {
return _M_ht.begin(); }
407 {
return _M_ht.end(); }
411 {
return _M_ht.begin(); }
415 {
return _M_ht.end(); }
418 insert(
const value_type& __obj)
419 {
return _M_ht.insert_equal(__obj); }
421 template<
class _InputIterator>
423 insert(_InputIterator __f, _InputIterator __l)
424 { _M_ht.insert_equal(__f,__l); }
427 insert_noresize(
const value_type& __obj)
428 {
return _M_ht.insert_equal_noresize(__obj); }
431 find(
const key_type& __key)
432 {
return _M_ht.find(__key); }
435 find(
const key_type& __key)
const
436 {
return _M_ht.find(__key); }
439 count(
const key_type& __key)
const
440 {
return _M_ht.count(__key); }
442 pair<iterator, iterator>
443 equal_range(
const key_type& __key)
444 {
return _M_ht.equal_range(__key); }
446 pair<const_iterator, const_iterator>
447 equal_range(
const key_type& __key)
const
448 {
return _M_ht.equal_range(__key); }
451 erase(
const key_type& __key)
452 {
return _M_ht.erase(__key); }
456 { _M_ht.erase(__it); }
459 erase(iterator __f, iterator __l)
460 { _M_ht.erase(__f, __l); }
467 resize(size_type __hint)
468 { _M_ht.resize(__hint); }
472 {
return _M_ht.bucket_count(); }
475 max_bucket_count()
const
476 {
return _M_ht.max_bucket_count(); }
479 elems_in_bucket(size_type __n)
const
480 {
return _M_ht.elems_in_bucket(__n); }
483 template<
class _Key,
class _Tp,
class _HF,
class _EqKey,
class _Alloc>
485 operator==(
const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
486 const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2)
487 {
return __hm1._M_ht == __hm2._M_ht; }
489 template<
class _Key,
class _Tp,
class _HF,
class _EqKey,
class _Alloc>
491 operator!=(
const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
492 const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2)
493 {
return !(__hm1 == __hm2); }
495 template<
class _Key,
class _Tp,
class _HashFn,
class _EqlKey,
class _Alloc>
497 swap(hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1,
498 hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
499 { __hm1.swap(__hm2); }
501 _GLIBCXX_END_NAMESPACE_VERSION
#define __glibcxx_class_requires3(_a, _b, _c, _d)
Definition: concept_check.h:50
bool operator==(const exception_ptr &, const exception_ptr &) _GLIBCXX_USE_NOEXCEPT __attribute__((__pure__))
#define __glibcxx_class_requires(_a, _b)
Definition: concept_check.h:48
bool operator!=(const exception_ptr &, const exception_ptr &) _GLIBCXX_USE_NOEXCEPT __attribute__((__pure__))
void swap(exception_ptr &__lhs, exception_ptr &__rhs)
Definition: exception_ptr.h:160