Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Go to the documentation of this file.
20 #ifndef __TBB_concurrent_unordered_set_H
21 #define __TBB_concurrent_unordered_set_H
23 #define __TBB_concurrent_unordered_set_H_include_area
31 namespace interface5 {
34 template<
typename Key,
typename Hash_compare,
typename Allocator,
bool Allow_multimapping>
42 #if __TBB_UNORDERED_NODE_HANDLE_PRESENT
46 #endif // __TBB_UNORDERED_NODE_HANDLE_PRESENT
60 template<
typename Key,
typename Hasher,
typename Key_equality,
typename Allocator>
63 template <
typename Key,
typename Hasher = tbb::tbb_hash<Key>,
typename Key_equality = std::equal_to<Key>,
typename Allocator = tbb::tbb_allocator<Key> >
98 #if __TBB_UNORDERED_NODE_HANDLE_PRESENT
119 template <
typename Iterator>
127 template <
typename Iterator>
134 template <
typename Iterator>
141 #if __TBB_INITIALIZER_LISTS_PRESENT
147 insert(il.begin(),il.end());
153 insert(il.begin(), il.end());
159 insert(il.begin(), il.end());
162 #endif //# __TBB_INITIALIZER_LISTS_PRESENT
164 #if __TBB_CPP11_RVALUE_REF_PRESENT && !__TBB_IMPLICIT_MOVE_PRESENT
182 #endif //__TBB_CPP11_RVALUE_REF_PRESENT && !__TBB_IMPLICIT_MOVE_PRESENT
184 #if __TBB_CPP11_RVALUE_REF_PRESENT
190 #if __TBB_UNORDERED_NODE_HANDLE_PRESENT
191 template<
typename Hash,
typename Equality>
195 template<
typename Hash,
typename Equality>
199 template<
typename Hash,
typename Equality>
203 template<
typename Hash,
typename Equality>
207 #endif //__TBB_UNORDERED_NODE_HANDLE_PRESENT
215 #if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
220 template <
template<
typename...>
typename Set,
typename T,
typename... Args>
221 using cu_set_t = Set <
223 std::conditional_t< (
sizeof...(Args)>0) && !is_allocator_v< pack_element_t<0, Args...> >,
224 pack_element_t<0, Args...>, tbb_hash<T> >,
225 std::conditional_t< (
sizeof...(Args)>1) && !is_allocator_v< pack_element_t<1, Args...> >,
226 pack_element_t<1, Args...>, std::equal_to<T> >,
227 std::conditional_t< (
sizeof...(Args)>0) && is_allocator_v< pack_element_t<
sizeof...(Args)-1, Args...> >,
234 concurrent_unordered_set(I, I)
235 -> internal::cu_set_t<concurrent_unordered_set, internal::iterator_value_t<I>>;
238 template<
typename I,
typename... Args>
239 concurrent_unordered_set(I, I,
size_t, Args...)
240 -> internal::cu_set_t<concurrent_unordered_set, internal::iterator_value_t<I>, Args...>;
244 concurrent_unordered_set(std::initializer_list<T>)
245 -> internal::cu_set_t<concurrent_unordered_set, T>;
248 template<
typename T,
typename... Args>
249 concurrent_unordered_set(std::initializer_list<T>,
size_t, Args...)
250 -> internal::cu_set_t<concurrent_unordered_set, T, Args...>;
254 template <
typename Key,
typename Hasher = tbb::tbb_hash<Key>,
typename Key_equality = std::equal_to<Key>,
255 typename Allocator = tbb::tbb_allocator<Key> >
256 class concurrent_unordered_multiset :
257 public internal::concurrent_unordered_base< concurrent_unordered_set_traits<Key,
258 internal::hash_compare<Key, Hasher, Key_equality>, Allocator, true> >
264 #if __TBB_EXTRA_DEBUG
267 using traits_type::allow_multimapping;
269 using base_type::insert;
292 #if __TBB_UNORDERED_NODE_HANDLE_PRESENT
294 #endif // __TBB_UNORDERED_NODE_HANDLE_PRESENT
315 template <
typename Iterator>
324 template <
typename Iterator>
331 template <
typename Iterator>
339 #if __TBB_INITIALIZER_LISTS_PRESENT
343 : base_type(n_of_buckets, key_compare(a_hasher, a_keyeq), a)
345 insert(il.begin(),il.end());
351 insert(il.begin(), il.end());
358 insert(il.begin(), il.end());
361 #endif //# __TBB_INITIALIZER_LISTS_PRESENT
364 #if __TBB_CPP11_RVALUE_REF_PRESENT && !__TBB_IMPLICIT_MOVE_PRESENT
382 #endif //__TBB_CPP11_RVALUE_REF_PRESENT && !__TBB_IMPLICIT_MOVE_PRESENT
384 #if __TBB_CPP11_RVALUE_REF_PRESENT
391 #if __TBB_UNORDERED_NODE_HANDLE_PRESENT
392 template<
typename Hash,
typename Equality>
394 { this->internal_merge(source); }
396 template<
typename Hash,
typename Equality>
398 { this->internal_merge(source); }
400 template<
typename Hash,
typename Equality>
402 { this->internal_merge(source); }
404 template<
typename Hash,
typename Equality>
406 { this->internal_merge(source); }
408 #endif //__TBB_UNORDERED_NODE_HANDLE_PRESENT
415 #if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
420 -> internal::cu_set_t<concurrent_unordered_multiset, internal::iterator_value_t<I>>;
423 template<
typename I,
typename... Args>
425 -> internal::cu_set_t<concurrent_unordered_multiset, internal::iterator_value_t<I>, Args...>;
430 -> internal::cu_set_t<concurrent_unordered_multiset, T>;
433 template<
typename T,
typename... Args>
440 using interface5::concurrent_unordered_set;
441 using interface5::concurrent_unordered_multiset;
446 #undef __TBB_concurrent_unordered_set_H_include_area
448 #endif// __TBB_concurrent_unordered_set_H
concurrent_unordered_multiset(const Allocator &a)
concurrent_unordered_set_traits()
base_type::const_pointer const_pointer
concurrent_unordered_set(const concurrent_unordered_set &table)
void merge(concurrent_unordered_set< Key, Hash, Equality, Allocator > &&source)
concurrent_unordered_multiset(size_type n_of_buckets, const hasher &a_hasher, const allocator_type &a)
concurrent_unordered_set(const Allocator &a)
tbb::internal::allocator_traits< allocator_type >::size_type size_type
concurrent_unordered_multiset(Iterator first, Iterator last, size_type n_of_buckets, const allocator_type &a)
concurrent_unordered_set(const concurrent_unordered_set &table, const Allocator &a)
internal::concurrent_unordered_base< traits_type > base_type
concurrent_unordered_set & operator=(const concurrent_unordered_set &table)
base_type::node_type node_type
void merge(concurrent_unordered_multiset< Key, Hash, Equality, Allocator > &source)
base_type::iterator local_iterator
concurrent_unordered_set(size_type n_of_buckets, const allocator_type &a)
concurrent_unordered_set(std::initializer_list< value_type > il, size_type n_of_buckets, const allocator_type &a)
base_type::const_reference const_reference
concurrent_unordered_multiset(concurrent_unordered_multiset &&table, const Allocator &a)
concurrent_unordered_set_traits< Key, hash_compare, Allocator, true > traits_type
base_type::iterator iterator
static const Key & get_key(const value_type &value)
concurrent_unordered_multiset & operator=(const concurrent_unordered_multiset &table)
Traits::value_type value_type
Container::iterator first(Container &c)
concurrent_unordered_multiset(const concurrent_unordered_multiset &table)
concurrent_unordered_set(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())
Container::iterator last(Container &c)
const typedef allocator_type::value_type & const_reference
internal::hash_compare< Key, Hasher, Key_equality > hash_compare
base_type::iterator iterator
concurrent_unordered_set & operator=(concurrent_unordered_set &&table)
Class for determining type of std::allocator<T>::value_type.
internal::hash_compare< Key, Hasher, Key_equality > hash_compare
allocator_type::value_type & reference
base_type::const_pointer const_pointer
std::pair< iterator, bool > insert(const value_type &value)
concurrent_unordered_multiset & operator=(concurrent_unordered_multiset &&table)
base_type::size_type size_type
concurrent_unordered_set(std::initializer_list< value_type > il, size_type n_of_buckets, const hasher &a_hasher, const allocator_type &a)
concurrent_unordered_set(size_type n_of_buckets, const hasher &a_hasher, const allocator_type &a)
concurrent_unordered_multiset(size_type n_of_buckets, const allocator_type &a)
tbb::internal::node_handle< key_type, key_type, typename internal::split_ordered_list< key_type, allocator_type >::node, allocator_type > node_type
base_type::allocator_type allocator_type
base_type::allocator_type allocator_type
void move(tbb_thread &t1, tbb_thread &t2)
base_type::size_type size_type
tbb::internal::allocator_traits< allocator_type >::const_pointer const_pointer
Traits::node_type node_type
concurrent_unordered_base & operator=(const concurrent_unordered_base &right)
Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.
base_type::reference reference
internal::concurrent_unordered_base< traits_type > base_type
void merge(concurrent_unordered_multiset< Key, Hash, Equality, Allocator > &source)
void merge(concurrent_unordered_multiset< Key, Hash, Equality, Allocator > &&source)
void merge(concurrent_unordered_set< Key, Hash, Equality, Allocator > &source)
tbb::internal::allocator_traits< allocator_type >::pointer pointer
base_type::value_type value_type
concurrent_unordered_set_traits(const hash_compare &hc)
base_type::const_iterator const_local_iterator
base_type::const_reference const_reference
Traits::allocator_type allocator_type
hash_compare my_hash_compare
concurrent_unordered_multiset(std::initializer_list< value_type > il, size_type n_of_buckets, const hasher &a_hasher, const allocator_type &a)
base_type::value_type value_type
base_type::const_iterator const_local_iterator
base_type::difference_type difference_type
concurrent_unordered_set(Iterator first, Iterator last, size_type n_of_buckets, const hasher &a_hasher, const allocator_type &a)
void internal_merge(SourceType &source)
concurrent_unordered_multiset(Iterator first, Iterator last, size_type n_of_buckets, const hasher &a_hasher, const allocator_type &a)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
concurrent_unordered_set(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())
base_type::pointer pointer
Identifiers declared inside namespace internal should never be used directly by client code.
void merge(concurrent_unordered_set< Key, Hash, Equality, Allocator > &&source)
base_type::iterator local_iterator
base_type::difference_type difference_type
concurrent_unordered_multiset(concurrent_unordered_multiset &&table)
concurrent_unordered_multiset(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())
concurrent_unordered_set(concurrent_unordered_set &&table, const Allocator &a)
base_type::const_iterator const_iterator
Hash_compare hash_compare
concurrent_unordered_multiset(std::initializer_list< value_type > il, size_type n_of_buckets, const allocator_type &a)
concurrent_unordered_set(concurrent_unordered_set &&table)
void merge(concurrent_unordered_set< Key, Hash, Equality, Allocator > &source)
concurrent_unordered_multiset(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())
base_type::const_iterator const_iterator
tbb::internal::allocator_traits< allocator_type >::difference_type difference_type
void merge(concurrent_unordered_multiset< Key, Hash, Equality, Allocator > &&source)
base_type::pointer pointer
tbb::internal::allocator_rebind< Allocator, value_type >::type allocator_type
static const size_type initial_bucket_number
allocator_traits< Alloc >::template rebind_alloc< T >::other type
concurrent_unordered_set(Iterator first, Iterator last, size_type n_of_buckets, const allocator_type &a)
concurrent_unordered_set_traits< Key, hash_compare, Allocator, false > traits_type
concurrent_unordered_multiset(const concurrent_unordered_multiset &table, const Allocator &a)
base_type::node_type node_type
base_type::reference reference
Copyright © 2005-2020 Intel Corporation. All Rights Reserved.
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
registered trademarks or trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
* Other names and brands may be claimed as the property of others.