from .utility cimport pair cdef extern from "" namespace "std" nogil: cdef cppclass unordered_set[T,HASH=*,PRED=*,ALLOCATOR=*]: ctypedef T value_type # these should really be allocator_type.size_type and # allocator_type.difference_type to be true to the C++ definition # but cython doesn't support deferred access on template arguments ctypedef size_t size_type ctypedef ptrdiff_t difference_type cppclass const_iterator cppclass iterator: iterator() except + iterator(iterator&) except + value_type& operator*() iterator operator++() iterator operator--() iterator operator++(int) iterator operator--(int) bint operator==(iterator) bint operator==(const_iterator) bint operator!=(iterator) bint operator!=(const_iterator) cppclass const_iterator: const_iterator() except + const_iterator(iterator&) except + operator=(iterator&) except + const value_type& operator*() const_iterator operator++() const_iterator operator--() const_iterator operator++(int) const_iterator operator--(int) bint operator==(iterator) bint operator==(const_iterator) bint operator!=(iterator) bint operator!=(const_iterator) unordered_set() except + unordered_set(unordered_set&) except + #unordered_set& operator=(unordered_set&) bint operator==(unordered_set&, unordered_set&) bint operator!=(unordered_set&, unordered_set&) iterator begin() const_iterator const_begin "begin"() const_iterator cbegin() void clear() size_t count(const T&) bint empty() iterator end() const_iterator const_end "end"() const_iterator cend() pair[iterator, iterator] equal_range(const T&) pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&) iterator erase(iterator) iterator const_erase "erase"(const_iterator) iterator erase(const_iterator, const_iterator) size_t erase(const T&) iterator find(const T&) const_iterator const_find "find"(const T&) pair[iterator, bint] insert(const T&) except + iterator insert(const_iterator, const T&) except + void insert[InputIt](InputIt, InputIt) except + size_t max_size() size_t size() void swap(unordered_set&) #value_compare value_comp() void max_load_factor(float) float max_load_factor() float load_factor() void rehash(size_t) void reserve(size_t) size_t bucket_count() size_t max_bucket_count() size_t bucket_size(size_t) size_t bucket(const T&) # C++20 bint contains(const T&) cdef cppclass unordered_multiset[T,HASH=*,PRED=*,ALLOCATOR=*]: ctypedef T value_type # these should really be allocator_type.size_type and # allocator_type.difference_type to be true to the C++ definition # but cython doesn't support deferred access on template arguments ctypedef size_t size_type ctypedef ptrdiff_t difference_type cppclass const_iterator cppclass iterator: iterator() except + iterator(iterator&) except + value_type& operator*() iterator operator++() iterator operator++(int) bint operator==(iterator) bint operator==(const_iterator) bint operator!=(iterator) bint operator!=(const_iterator) cppclass const_iterator: const_iterator() except + const_iterator(iterator&) except + operator=(iterator&) except + const value_type& operator*() const_iterator operator++() const_iterator operator++(int) bint operator==(iterator) bint operator==(const_iterator) bint operator!=(iterator) bint operator!=(const_iterator) unordered_multiset() except + unordered_multiset(unordered_multiset&) except + #unordered_multiset& operator=(unordered_multiset&) bint operator==(unordered_multiset&, unordered_multiset&) bint operator!=(unordered_multiset&, unordered_multiset&) iterator begin() const_iterator const_begin "begin"() const_iterator cbegin() void clear() size_t count(const T&) bint empty() iterator end() const_iterator const_end "end"() const_iterator cend() pair[iterator, iterator] equal_range(const T&) pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&) iterator erase(iterator) iterator const_erase "erase"(const_iterator) iterator erase(const_iterator, const_iterator) size_t erase(const T&) iterator find(const T&) const_iterator const_find "find"(const T&) iterator insert(const T&) except + iterator insert(const_iterator, const T&) except + void insert[InputIt](InputIt, InputIt) except + size_t max_size() size_t size() void swap(unordered_multiset&) #value_compare value_comp() void max_load_factor(float) float max_load_factor() float load_factor() void rehash(size_t) void reserve(size_t) size_t bucket_count() size_t max_bucket_count() size_t bucket_size(size_t) size_t bucket(const T&) # C++20 bint contains(const T&)