Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class template unordered_set

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template unordered_set

boost::intrusive::unordered_set

Synopsis

// In header: <boost/intrusive/unordered_set.hpp>
template<typename T, class... Options> 
class unordered_set : public boost::intrusive::hashtable< ValueTraits, VoidOrKeyOfValue, VoidOrKeyHash, VoidOrKeyEqual, BucketTraits, SizeType, BoolFlags|hash_bool_flags::unique_keys_pos >
{
public:
  // types
  typedef implementation_defined::value_type           value_type;          
  typedef implementation_defined::key_type             key_type;            
  typedef implementation_defined::key_of_value         key_of_value;        
  typedef implementation_defined::value_traits         value_traits;        
  typedef implementation_defined::bucket_traits        bucket_traits;       
  typedef implementation_defined::pointer              pointer;             
  typedef implementation_defined::const_pointer        const_pointer;       
  typedef implementation_defined::reference            reference;           
  typedef implementation_defined::const_reference      const_reference;     
  typedef implementation_defined::difference_type      difference_type;     
  typedef implementation_defined::size_type            size_type;           
  typedef implementation_defined::key_equal            key_equal;           
  typedef implementation_defined::hasher               hasher;              
  typedef implementation_defined::bucket_type          bucket_type;         
  typedef implementation_defined::bucket_ptr           bucket_ptr;          
  typedef implementation_defined::iterator             iterator;            
  typedef implementation_defined::const_iterator       const_iterator;      
  typedef implementation_defined::insert_commit_data   insert_commit_data;  
  typedef implementation_defined::local_iterator       local_iterator;      
  typedef implementation_defined::const_local_iterator const_local_iterator;
  typedef implementation_defined::node_traits          node_traits;         
  typedef implementation_defined::node                 node;                
  typedef implementation_defined::node_ptr             node_ptr;            
  typedef implementation_defined::const_node_ptr       const_node_ptr;      
  typedef implementation_defined::node_algorithms      node_algorithms;     
  // construct/copy/destruct
  explicit unordered_set(const bucket_traits &, const hasher & = hasher(), 
                         const key_equal & = key_equal(), 
                         const value_traits & = value_traits());
  template<typename Iterator> 
    unordered_set(Iterator, Iterator, const bucket_traits &, 
                  const hasher & = hasher(), const key_equal & = key_equal(), 
                  const value_traits & = value_traits());
  unordered_set(unordered_set &&);
  unordered_set & operator=(unordered_set &&);
  ~unordered_set();
  // public member functions
  iterator begin();
  const_iterator begin() const;
  const_iterator cbegin() const;
  iterator end();
  const_iterator end() const;
  const_iterator cend() const;
  hasher hash_function() const;
  key_equal key_eq() const;
  bool empty() const;
  size_type size() const;
  void swap(unordered_set &);
  template<typename Cloner, typename Disposer> 
    void clone_from(const unordered_set &, Cloner, Disposer);
  template<typename Cloner, typename Disposer> 
    void clone_from(unordered_set &&, Cloner, Disposer);
  std::pair< iterator, bool > insert(reference);
  template<typename Iterator> void insert(Iterator, Iterator);
  std::pair< iterator, bool > 
  insert_check(const key_type &, insert_commit_data &);
  template<typename KeyType, typename KeyHasher, typename KeyEqual> 
    std::pair< iterator, bool > 
    insert_check(const KeyType &, KeyHasher, KeyEqual, insert_commit_data &);
  iterator insert_commit(reference, const insert_commit_data &);
  void erase(const_iterator);
  void erase(const_iterator, const_iterator);
  size_type erase(const key_type &);
  template<typename KeyType, typename KeyHasher, typename KeyEqual> 
    size_type erase(const KeyType &, KeyHasher, KeyEqual);
  template<typename Disposer> void erase_and_dispose(const_iterator, Disposer);
  template<typename Disposer> 
    void erase_and_dispose(const_iterator, const_iterator, Disposer);
  template<typename Disposer> 
    size_type erase_and_dispose(const key_type &, Disposer);
  template<typename KeyType, typename KeyHasher, typename KeyEqual, 
           typename Disposer> 
    size_type erase_and_dispose(const KeyType &, KeyHasher, KeyEqual, 
                                Disposer);
  void clear();
  template<typename Disposer> void clear_and_dispose(Disposer);
  size_type count(const key_type &) const;
  template<typename KeyType, typename KeyHasher, typename KeyEqual> 
    size_type count(const KeyType &, KeyHasher, KeyEqual) const;
  iterator find(const key_type &);
  template<typename KeyType, typename KeyHasher, typename KeyEqual> 
    iterator find(const KeyType &, KeyHasher, KeyEqual);
  const_iterator find(const key_type &) const;
  template<typename KeyType, typename KeyHasher, typename KeyEqual> 
    const_iterator find(const KeyType &, KeyHasher, KeyEqual) const;
  std::pair< iterator, iterator > equal_range(const key_type &);
  template<typename KeyType, typename KeyHasher, typename KeyEqual> 
    std::pair< iterator, iterator > 
    equal_range(const KeyType &, KeyHasher, KeyEqual);
  std::pair< const_iterator, const_iterator > 
  equal_range(const key_type &) const;
  template<typename KeyType, typename KeyHasher, typename KeyEqual> 
    std::pair< const_iterator, const_iterator > 
    equal_range(const KeyType &, KeyHasher, KeyEqual) const;
  iterator iterator_to(reference);
  const_iterator iterator_to(const_reference) const;
  local_iterator local_iterator_to(reference);
  const_local_iterator local_iterator_to(const_reference) const;
  size_type bucket_count() const;
  size_type bucket_size(size_type) const;
  size_type bucket(const key_type &) const;
  template<typename KeyType, typename KeyHasher> 
    size_type bucket(const KeyType &, KeyHasher) const;
  bucket_ptr bucket_pointer() const;
  local_iterator begin(size_type);
  const_local_iterator begin(size_type) const;
  const_local_iterator cbegin(size_type) const;
  local_iterator end(size_type);
  const_local_iterator end(size_type) const;
  const_local_iterator cend(size_type) const;
  void rehash(const bucket_traits &);
  void full_rehash();
  bool incremental_rehash(bool = true);
  bool incremental_rehash(const bucket_traits &);
  size_type split_count() const;
  // public static functions
  static local_iterator s_local_iterator_to(reference);
  static const_local_iterator s_local_iterator_to(const_reference);
  static size_type suggested_upper_bucket_count(size_type);
  static size_type suggested_lower_bucket_count(size_type);
};

Description

Шаблон класса unordered_set представляет собой интрузивный контейнер, имитирующий большую часть интерфейса std::tr1::unordered_set, как описано в C++ TR1.

unordered_set представляет собой полуинтрузивный контейнер: каждый объект, подлежащий хранению в контейнере, должен содержать надлежащий крючок, но контейнер также нуждается в дополнительной вспомогательной памяти для работы: unordered_set нуждается в указателе на массив типа bucket_type, который должен быть передан в конструкторе. Этот массив ведра должен иметь, по крайней мере, тот же срок службы, что и контейнер. Это делает использование неупорядоченного_set более сложным, чем чисто навязчивые контейнеры. bucket_type является по умолчанию конструктивным, копируемым и присваиваемым

Параметр шаблона T - это тип, которым должен управлять контейнер. Пользователь может указать дополнительные опции и, если опции не предусмотрены, используются опции по умолчанию.

Контейнер поддерживает следующие опции: base_hook<>/member_hook<>/value_traits<>, constant_time_size<>, size_type<>, hash<> и equal<>, power_2_buckets<> и cache_begin<>.

unordered_set предоставляет только передовые итераторы, но предоставляет 4 типа итераторов: итератор и const_iterator для навигации по всему контейнеру и local_iterator и const_local_iterator для навигации по значениям, хранящимся в одном ведре. Местные итераторы быстрее и меньше.

Не рекомендуется использовать неупорядоченные_множества непостоянного времени, поскольку несколько ключевых функций, таких как «пустое()», становятся непостоянными функциями времени. Непостоянный размер unordered_sets в основном предоставляется для поддержки автоматических крючков.

unordered_set, в отличие от std::unordered_set, не производит автоматические перенастройки и не предлагает функции, связанные с коэффициентом загрузки. Перенастройка может быть явно запрошена, и пользователь должен предоставить новый массив ковша, который будет использоваться с этого момента.

Поскольку автоматическая перетасовка не выполняется, итераторы никогда не аннулируются при вставке или стирании элементов. Итераторы признаются недействительными только при восстановлении.

unordered_set public construct/copy/destruct

  1. explicit>bucket_traitsconstkey_equalvalue_traits>value_traits:
    : Эффектыunordered_set: Составление ссылки на ковшечный массив и копии ключа_hasher и равного_func-функторов

    Броски::node_traits::node_traits::node_traits::node_traits::73>

    <69

  2. templatetypenameнеупорядоченный_setИтератор,bucket_traits,bcket_traitsbucket_traitsbucket_traits,bucket_traits,ИтераторСложность: N - расстояние(b, e): 2>=2>равный_funcравно>2>,значение_traitsНужно использовать ведра:Если N Средний случай - O(N) (с хорошей хеш-функцией и с ведрами_len >= N), худший случай O(N^2).

    Броски: Если значение_черты::node_traits::node_traits::node constructor throws (это не происходит с предопределенными Boost.Intrusive hooks) или копи-конструктор или вызов хэшера или ключа_equal throws.

    Заметки: массив ведер должен быть утилизирован только после *это утилизировано.

  3. неупорядоченный_set(неупорядоченный_set&& x);

    Последствия: доделать

  4. неупорядоченный_set &оператор=(неупорядоченный_set && x);

    : доделать

  5. ~неупорядоченный_set();

    Последствия: Отделяет все элементы от этого. Объекты в unordered_set не удаляются (т.е. не называются деструкторы).

    Комплексность: Линейный по количеству элементов в unordered_set, если это значение безопасного режима или авто-отсоединения. В противном случае константа.

    Броски: Ничего.

unordered_set public member functions

  1. iteratorbegin;

    Возвращает итератор, указывающий на начало неупорядоченного_set.

    Комплексность: Амортизированное постоянное время. Худший случай (пустое неупорядоченное_set): O(this->bucket_count())

    Броски: Ничего.

  2. const_iteratorbegin()const;

    Возвращает const_iterator, указывающий на начало неупорядоченного_set.

    Комплексность: Амортизированное постоянное время. Худший случай (пустое неупорядоченное_set): O(this->bucket_count())

    Броски: Ничего.

  3. const_iteratorcbegin()const;

    Возвращает const_iterator, указывающий на начало неупорядоченного_set.

    Комплексность: Амортизированное постоянное время. Худший случай (пустое неупорядоченное_set): O(this->bucket_count())

    Броски: Ничего.

  4. iteratorend;

    : Возвращает итератор, указывающий на конец неупорядоченного_set.

    :Константа.

    Броски: Ничего.

  5. const_iteratorendconst;

    : Возвращает const_iterator, указывающий на конец неупорядоченного_set.

    : Constant.

    Броски: Ничего.

  6. const_iteratorcend()const;
    : Возвращает const_iterator, указывающий на конец неупорядоченного_set.

    : Constant.

    Броски: Ничего.

  7. hasher hash_function()const;
    Последствия:Возвращает хешерный объект, используемый неупорядоченным_set.

    :Константа.

    Броски: Если кидает копи-конструктор.

  8. key_equalkey_eq()const;
    : Возвращает ключ_равный объект, используемый неупорядоченный_set.

    :Константа.

    Броски: Если ключ_равный копи-конструктор бросает.

  9. boolempty()const;
    : Эффекты: Возвращает истинное значение, если контейнер пуст.

    Комплексность: если значение постоянного времени и cache_begin опции отключены, среднее постоянное время (наихудший случай, с пустым() == истинно: O(this->bucket_count()). В противном случае константа.

    Броски: Ничего.

  10. size_typesizeconst;

    : Возвращает количество элементов, хранящихся в неупорядоченном_наборе.

    Сложность: Линейность элементов, содержащихся в constant_time_size, ложна. Постоянное время.

    Броски: Ничего.

  11. voidнеупорядоченный_set;;

    : Эффекты: Построение пустого неупорядоченный_set, сохранение ссылки на ковшеобразный массив и копии ключа_hasher и равных_func-функторов.

    :Константа.

    Броски : Если значение_traits::node_traits::node_traits::node_traits::node-traits::node-traits::node-traits::node-traits::node-constructor или вызов хеш_func или равных_func-бросков.

    <19

  12. templatetypename Cloner, Disposerclone_fromunordered_set,  src,   Disposer disposer,;
    : Disposer::оператор()(указатель) должен уступить узлам, которые сравнивают равные и производят одинаковый хэш, чем исходный узел.

    : Стирает все элементы из *этого вызывающего дисплея::оператор()(const_reference) и вставляет их на *это. Функция хеширования и предикат равенства скопированы из источника.

    Если опция store_hash верна, этот метод не использует функцию хеширования.

    Если какая-либо операция бросает, все клонированные элементы несвязаны и расположены, вызывая Disposer::operator()(pointer).

    Сложность: Linear to erased plus inserted elements.

    Throws: Если клонер или хешер бросок или хеш или равенство предикат копирования бросок. Базовая гарантия.

  13. templatetypename Cloner, Disposer> voidclone_from&& src,  Disposer disposer;:
    : Disposer::operator()
    :Effects: Erases all the elements from src call Cloner::operator()(reference) и inserts them on *this. Функция хеширования и предикат равенства копируются из источника.

    Если опция store_hash верна, этот метод не использует хеш-функцию.

    Если какая-либо операция бросает, все клонированные элементы являются несвязанными и утилизируются, вызывая Disposer::operator()(pointer).

    Сложность: Линейный стертый плюс вставленные элементы.

    Броски: Если клонер или хеш-бросок, или хеш-сигнал, или броски предиката равенства. Базовая гарантия.

  14. std::iterator,boolinertссылказначение;;
    : Требуется значение

    : Пытается вставить значение в неупорядоченное_множество.

    Вернет его и возвращает пару, содержащую итератор, к новому значению и истинному. Если есть эквивалентное значение возвращает пару, содержащую итератор, к уже существующему значению и ложному.

    Комплексность: Средний случай O(1), наихудший случай O(this->size()).

    Броски: Если бросает внутренний хешер или функтор равенства. Сильная гарантия.

    Примечание : Не влияет на действительность итераторов и ссылок. Копировальными конструкторами не называются.

  15. templatetypenamevoidinert,Iterator;

    : Требуется : Отклоняющийся итератор должен давать lзначение значения типа_типа.

    : Эффекты: Эквивалентно этому->insert_unique(t) для каждого элемента в [b, e].

    : Средний случай O(N), где N - расстояние(b, e). Наихудший случай O(N*this->size()).

    : Если внутренний хэшер или броски функтора равенства. Основная гарантия.

    Примечание : Не влияет на действительность итераторов и ссылок. Копировальными конструкторами не называются.

  16. std::iterator,insert_checkkey_type & inert_commit_data, && commit_data;;
    Эффекты неупорядоченный_set с использованием предоставленного пользователем ключа вместо самого значения.

    Возврат пары, содержащей итератор, к уже имеющемуся значению и ложному. Если значение может быть вставлено, возвращает истинное значение в возвращаемую пару boolean и заполняет «commit_data», которое предназначено для использования с функцией «insert_commit».

    Комплексность: Средний случай O(1), наихудший случай O(this->size()).

    Броски: Если есть хэшер или key_compare бросок. Сильная гарантия.

    Примечания: Эта функция используется для повышения производительности при построении значения_типа дорого: при наличии эквивалентного значения построенный объект должен быть отброшен. Много раз часть узла, которая используется для наложения хэша или равенства, намного дешевле для построения, чем значение_тип, и эта функция предлагает возможность использовать эту часть для проверки, будет ли вставка успешной.

    Если проверка будет успешной, пользователь может построить значение_тип и использовать "insert_commit" для вставки объекта в постоянное время.

    "commit_data" остается действительным для последующего "insert_commit" только в том случае, если больше объектов не вставлено или стерто из неупорядоченного_set.

    После успешного перенастройки вставка_commit_data остается действительной.

  17. template KeyType,typename KeyHasher,  keyEqual std::iterator, bool > (const&KeyHasher hasher,  KeyEqual_value_equal, &;

    : «hash_func» вызывает те же хэш-значения, что и хранимый хэш-значения. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.

    «equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница заключается в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.

    Эффекты: Проверяет, можно ли вставить значение в неупорядоченный_set, используя предоставленный пользователем ключ вместо самого значения.

    Возврат : При наличии эквивалентного значения возвращает пару, содержащую итератор, к уже имеющемуся значению и ложному. Если значение может быть вставлено, возвращает истинное значение в возвращенной паре boolean и заполняет «commit_data», которое предназначено для использования с функцией «insert_commit».

    Комплексность: Средний случай O(1), наихудший случай O(this->size()).

    Бросок: Если хеш_func или равно_func бросок. Сильная гарантия.

    Примечания: Эта функция используется для повышения производительности при построении значения_типа дорого: при наличии эквивалентного значения построенный объект должен быть отброшен. Много раз часть узла, которая используется для наложения хэша или равенства, намного дешевле для построения, чем значение_тип, и эта функция предлагает возможность использовать эту часть для проверки того, будет ли вставка успешной.

    Если проверка будет успешной, пользователь может построить значение_тип и использовать "insert_commit" для вставки объекта в постоянное время.

    "commit_data" остается действительной для последующего "insert_commit" только в том случае, если больше объектов не вставлено или удалено из неупорядоченного_set .

    После успешного перенастройки вставка_commit_data остается действительной.

  18. iteratorinert_commit(ссылка значение , const inert_commit_data & commit_data);

    : значение должно быть значением типа value_type. commit_data должны быть получены из предыдущего вызова на «insert_check». Никакие объекты не должны были быть вставлены или удалены из неупорядоченного_набора между "insert_check", который заполнил "commit_data" и вызовом "insert_commit".

    : Вставляется значение в неупорядоченного_набора с использованием информации, полученной из "commit_check", которую заполнил предыдущий "insert_check".

    : Постоянное время.

    : Ничто.

    Заметки: Эта функция имеет смысл только в том случае, если "insert_check" ранее выполнялась для заполнения "commit_data". Значение не должно быть вставлено или стерто между вызовами «insert_check» и «insert_commit».

    После успешного перенастройки вставка_commit_data остается в силе.

  19. void(const_iterator i;

    : Стирает элемент, на который указывает i.

    : Средний случай O(1), наихудший случай O(this->size()).

    : Ничего.

    Примечание: Инвалидирует итераторы (но не ссылки) на стертый элемент. Деструкторы не называются.

  20. voidconst_iterator b,const_iterator e;

    : Стирает диапазон, указанный на конце b.

    : Средний случай O(расстояние(b, e)), наихудший случай O(это->size()).

    : Ничего.

    Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  21. size_typeeraseconstkey_type &;
    : Эффекты: Стирает все элементы с заданным значением.

    : Количество стертых элементов.

    : Средний случай O(это->счет(значение)). Худший случай O(this->size()).

    Бросает: Если бросает внутренний шайба или функтор равенства. Основная гарантия.

    Примечание: Недействительны итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  22. template KeyType, typename KeyHasher, typename KeyEqual> size_typeerase(const & KeyHasher, KeyEqual equal_func;2>

    : «hash_func» должен представлять собой хеш-функцию, индуцирующую те же хеш-значения, что и хранимый хэшер. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.

    «equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.

    Эффекты: Стирает все элементы, которые имеют одинаковый хеш и сравнивает с заданным ключом.

    Возврат: Количество стертых элементов.

    Комплексность: Средний случай O(это->счет(значение)). Наихудший случай O(this->size()).

    Броски: Если хеш_func или равно_func бросок. Основная гарантия.

    Примечание: Недействительны итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  23. templatetypenamevoidconst_iterator i,disposer;

    : Disposer: : Disposer:

    : Стирает элемент, на который указывает i. Disposer::operator():Complexity: Average case O(1), worst case O(this->: Nothing.

    : Инвалидирует итераторы в стертые элементы.

  24. templatetypenamevoidconst_iterator b,const_iterator e, Disposer;

    : Disposer: : Disposer:

    Сложность: Средний случай O(расстояние(b, e)), наихудший случай O(это->размер()).

    Примечание : Недействительно итератор стертых элементов.

  25. templatetypename Disposer> size_typeerase_and_disposekey_type & Key,  Disposer disposer;
    : Disposer::operator()(pointer):37>

    : Стирает все элементы с заданным значением. Диспозитор::оператор()(указатель) вызывается для удаленных элементов.

    Возврат: Количество стертых элементов.

    Комплексность: Средний случай O(это->счет(значение)). Худший случай O(this->size()).

    Бросает: Если бросает внутренний хешер или функтор равенства. Основная гарантия.

    Примечание : Недействительны итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  26. template KeyType, typename KeyHasher, typename KeyEqual, erase_и_disposeconst  & KeyHasher hash_func, equal_func,

    : Disposer::operator()(52): Стирает все элементы с заданным ключом. Сравнительный функтор «equal_func». Диспозитор::оператор()(указатель) вызывается для удаленных элементов.

    Возврат: Количество стертых элементов.

    Комплексность: Средний случай O(это->счет(значение)). Худший случай O(this->size()).

    Броски: Если хеш_func или равно_func бросок. Основная гарантия.

    Примечание: Недействительны итераторы к стертым элементам.

  27. voidclear;

    : Эффекты: Стирает все элементы.

    Комплексность: Линейное количество элементов на контейнере. Если это безопасный режим или авто-разъединить значение_тип. Постоянное время в противном случае.

    Броски: Ничего.

    Примечание: Инвалидирует итераторы (но не ссылки) на стертые элементы. Деструкторы не называются.

  28. templatetypename Disposer> voidclear_and_dispose;

    : Disposer::operator()(указатель)

    : Erases all of the elements.

    Комплексность: Линейный по количеству элементов на контейнере. Диспозитор::оператор()(указатель) вызывается для удаленных элементов.

    Броски: Ничего.

    Примечание: Недействительность итераторов (но не ссылок) на стертые элементы. Деструкторы не называются.

  29. size_typecountkey_type &const;
    : Возвращает количество содержащихся элементов с заданным значением

    : Средний случай O(1), наихудший случай O(this->size()).

    Бросок: Если бросает внутренний хешер или функтор равенства.

  30. template KeyType, typename KeyHasher,  typename KeyEqual>count(const  , KeyHasher hash_func,  equal_func;constconst

    : хэш-функция индуцирует те же хэш-значения, что и хранимый хэшер. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.

    «equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.

    : Возвращает число содержащихся элементов с заданным ключом

    Комплексность: Средний случай O(1), наихудший случай O(this->size()).

    Броски: Если хеш_func или равный бросок.

  31. iterator find(const key_type & key);

    Effects: Найденный итератор к первому элементу равен "значению" или концу(), если этот элемент не существует.

    Комплексность: Средний случай O(1), наихудший случай O(это->size()).

    Бросает: Если бросает внутренний хешер или функтор равенства.

  32. template KeyType,typename KeyHasher, typename KeyEqual> iterator(const  &KeyHasher, KeyEqual equal_func;2>

    : «hash_func» должен представлять собой хеш-функцию, индуцирующую те же хеш-значения, что и хранимый хеш-функция. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.

    «equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.

    Эффекты: Найден итератор к первому элементу, ключ которого является «ключом» в соответствии с заданным хэш-функтором равенства или концом(), если этот элемент не существует.

    Сложность: Средний случай O(1), наихудший случай O(this->size()).

    Броски: Если хеш_func или равно_func бросок.

    Примечание: Эта функция используется при построении значения_типа дорого и значение_тип можно сравнить с более дешевым типом ключа. Обычно этот ключ является частью значения_типа.

  33. const_iteratorfindconst &const;
    : Возвращает количество содержащихся элементов с заданным значением

    : Средний случай O(1), наихудший случай O(this->size()).

    Бросок: Если бросает внутренний хешер или функтор равенства.

  34. template KeyType, typename KeyHasher,  KeyEqual> const_iterator(const  , KeyHasher hash_func,  equal_func;2>const

    : «hash_func» должен быть хэш-функцией, индуцирующей те же хэш-значения, что и хранимый хэшер. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.

    «equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница заключается в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.

    : Найден итератор первого элемента, ключ которого является «ключом» в соответствии с заданным хешером и функтором равенства или концом(), если этот элемент не существует.

    Сложность: Средний случай O(1), наихудший случай O(this->size()).

    : Броски: Если хеш_func или равно_func бросок.

    Примечание: Эта функция используется при построении значения_типа дорого и значение_тип можно сравнить с более дешевым типом ключа. Обычно этот ключ является частью значения_типа.

  35. std::, iterator> equal_range(const key_type &;

    : Возвращает диапазон, содержащий все элементы со значениями, эквивалентными значению. Возвращает std::make_pair(this->end(), this->end()), если таких элементов не существует.

    Сложность: Средний случай O(this->count(value)). Наихудший случай O(this->size()).

    Бросает: Если бросает внутренний шайба или функтор равенства.

  36. template KeyType,typename KeyHasher, typename KeyEqualstd::iterator, iterator > (const & KeyHasher, KeyEqual equal_func, equal_func;

    : «hash_func» должен представлять собой хэш-функцию, индуцирующую те же хэш-значения, что и хранимый хэш-функция. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.

    «equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.

    Эффекты: Возвращает диапазон, содержащий все элементы с эквивалентными ключами. Возвращает std::make_pair(this->end(), this->end()), если таких элементов не существует.

    Комплексность: Средний случай O(this->count(key, hash_func, equal_func)). Худший случай O(this->size()).

    Броски: Если хеш_func или равно_func бросок.

    Примечание: Эта функция используется при построении значения_типа дорого и значение_тип можно сравнить с более дешевым ключевым типом. Обычно этот ключ является частью значения_типа.

  37. std::const_iterator, const_iterator > equal_range(const & key;const;
    : Возвращает диапазон, содержащий все элементы со значениями, эквивалентными значению. Возвращает std::make_pair(this->end(), this->end()), если таких элементов не существует.

    Сложность: Средний случай O(this->count(value)). Худший случай O(this->size()).

    Бросает: Если бросает внутренний хешер или функтор равенства.

  38. template KeyType,typename KeyHasher, typename KeyEqualstd::const_iterator, const_iterator > KeyHasher, KeyEqual equal_func,const

    : «hash_func» должен представлять собой хеш-функцию, индуцирующую те же хеш-значения, что и хранимый хеш-функция. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.

    «equal_func» должен быть функцией равенства, которая вызывает то же равенство, что и ключ_equal. Разница в том, что «equal_func» сравнивает произвольный ключ с содержащимися значениями.

    Эффекты: возвращает диапазон, содержащий все элементы с эквивалентными ключами. Возвращает std::make_pair(this->end(), this->end()), если таких элементов не существует.

    Комплексность: Средний случай O(this->count(key, hash_func, equal_func)). Наихудший случай O(this->size()).

    Броски: Если хешер или равный_func бросок.

    Примечание: Эта функция используется при построении значения_типа дорого и значение_тип можно сравнить с более дешевым ключевым типом. Обычно этот ключ является частью значения_типа.

  39. iteratoriterator_to(ссылказначение);

    Требования: Значение должно быть lvalue и должно быть в неупорядоченный_set соответствующего типа. В противном случае поведение не определено.

    Эффекты: Возврат: действительный итератор, принадлежащий неупорядоченный_set, который указывает на значение

    Сложность:Константа.

    Броски: Если внутренняя хеш-функция бросает.

  40. const_iterator iterator_to(const_referencevalue)const;

    : Значение должно быть lvalue и должно находиться в unordered_set соответствующего типа. В противном случае поведение не определено.

    Возврат: действительный const_iterator, принадлежащий неупорядоченный_set, который указывает на значение

    Комплексность:Константа.

    Броски: Если внутренняя хеш-функция бросает.

  41. local_iteratorlocal_iterator_to(ссылказначение);

    Требования: Значение должно быть lvalue и должно быть в неупорядоченный_set соответствующего типа. В противном случае поведение не определено.

    Последствия: Возврат: действительный локальный_iterator, принадлежащий неупорядоченный_set, который указывает на значение

    Комплексность: Константа.

    Броски: Ничего.

  42. const_local_iterator local_iterator_to(const_referencevalue)const;

    : Значение должно быть lvalue и должно находиться в unordered_set соответствующего типа. В противном случае поведение не определено.

    Последствия: Возврат: действительный локальный_iterator, принадлежащий неупорядоченный_set, который указывает на значение

    Комплексность: Константа.

    Броски: Ничего.

  43. size_typebucket_countconst;

    : Возвращает количество ведер, прошедших в конструкторе или последнюю функцию рехэша.

    : Constant.

    Броски: Ничего.

  44. size_typebucket_sizeconst;

    Требуется : n находится в диапазоне [0, это->bucket_count()]

    : Возвращает количество элементов в n-м ведре.

    : Constant.

    Броски: Ничего.

  45. size_typebucketkey_type&const;
    Возвращает индекс ковша, в котором элементы с ключами, эквивалентными k, были бы найдены, если бы такой элемент существовал.

    :Константа.

    : Если хеш-функтор бросает.

    Примечание: значение возврата находится в диапазоне [0, this->bucket_count()).

  46. template KeyType, typename KeyHasher> size_typebucket(const , KeyHasherhash_func) constconst;constconst;

    : «hash_func» должен представлять собой хеш-функцию, индуцирующую те же хеш-значения, что и хранимый хэш-функция. Разница в том, что «hash_func» хэширует данный ключ вместо значения_type.

    : Возвращает индекс ведра, в котором были бы найдены элементы с ключами, эквивалентными k, если бы такой элемент существовал.

    : Constant.

    Броски: Если хеш_func бросает.

    Примечание: значение возврата находится в диапазоне [0, this->bucket_count()).

  47. bucket_ptrbucket_pointerconst;

    : Эффекты: Возвращает указатель массива ковша, прошедший в конструкторе или последней функции рехэша.

    : Константа.

    Броски: Ничего.

  48. local_iteratorbeginsize_type;

    : n находится в диапазоне [0, this->bucket_count()]

    Комплексность:Константа.

    :Ничего.

    Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.

  49. const_local_iteratorbeginsize_typen)const;

    : n находится в диапазоне [0, this->bucket_count()]

    Комплексность:Константа.

    :Ничего.

    Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.

  50. const_local_iteratorcbeginsize_type n)const;

    : n находится в диапазоне [0, this->bucket_count()]

    Комплексность:Константа.

    :Ничего.

    Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.

  51. local_iteratorsize_type;

    : n находится в диапазоне [0, this->bucket_count()]

    Комплексность:Константа.

    :Ничего.

    Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.

  52. const_local_iteratorsize_typen)const;

    : n находится в диапазоне [0, this->bucket_count()]

    Комплексность:Константа.

    :Ничего.

    Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.

  53. const_local_iteratorsize_typen)const;

    : n находится в диапазоне [0, this->bucket_count()]

    : Возвращает конст_local_iterator, указывающий на конец последовательности, хранящейся в ведре n.

    : Constant.

    : Ничто.

    Примечание: [this->begin(n), this->end(n)) представляет собой допустимый диапазон, содержащий все элементы в n-м ведре.

  54. void rehash(const bucket_traits & new_bucket_traits);
    : new_bucket_traits может содержать указатель на новый ковшовый массив или такой же, как старый ковшовый массив с другой длиной. new_size — длина массива, на который указывают new_buckets. Если new_bucket_traits.bucket_begin() == this->bucket_pointer() new_bucket_traits.bucket_count() может быть больше или меньше, чем this->bucket_count(). Конструктор копий 'new_bucket_traits' не должен бросать.

    Effects: Если new_bucket_traits.bucket_begin() == this->bucket_pointer() == this->bucket_pointer() является ложным, нессылки значений из старого ковша и вставок то в новом согласно хеш-значению значений.

    new_bucket_traits.bucket_pointer() == this->bucket_pointer() верны, реализации избегают перемещения значений настолько, насколько это возможно.

    Bucket traits hold by * Если контейнер сконфигурирован как incremental<>, разделённое ведро устанавливается на новую bucket_count().

    Если опция store_hash верна, этот метод не использует хеш-функцию. Если ложно, реализация пытается минимизировать вызовы к хеш-функции (например, один раз для эквивалентных значений, если оптимизация_multikey верна).

    Если рехэш успешно обновляет внутренние bucket_traits с новыми_bucket_traits.

    Комплексность: Средний линейный случай в этом->size(), худший случай квадратичен.

    Броски: Если бросает хеш-функтор. Базовая гарантия.

  55. voidfull_rehash;

    Примечание: Эта функция используется при изменении ключей от вставленных элементов (например, при изменении языка, когда ключом является строка), но при этом сохраняется уникальность и свойства хэша, поэтому быстрое полное восстановление рехэша восстанавливает инварианты для * этого без извлечения и повторного вставки всех элементов.

    Требуется: Звонки, производимые для хеш-функции, не должны изменять значения свойств уникальности уже вставленных элементов. Если гашер(ключ1) == гашер(ключ2) был верен при вставке элементов, то он должен быть верен при вызовах, произведенных при выполнении этой функции.

    key_equal не называется внутри этой функции, поэтому предполагается, что ключ_equal(значение1, значение2) должен давать те же результаты, что и раньше для вставленных элементов.

    Эффекты: Перерабатывает все значения, удерживаемые этим, пересчитывая их хеш-значения и перераспределяя их через ведра.

    store_hash опция верна, этот метод использует хеш-функцию

    Средняя линейная в этом->size(), худший случай квадратичен.

    Броски: Если кидает функтор гашера. Базовая гарантия.

  56. boolincremental_rehashbool grow =true;

    Требования:

    :2>Комплексность:

    :

    Примечание: Данный способ доступен только при активации опции incremental.

  57. bool>bucket_traits;

    : Если new_bucket_traits.bucket_count() или this->bucket_count()*2, или this->split_bucket()!= new_bucket_traits.bucket_count() возвращает ложные и ничего не делает.

    bucket_traits и переносит все объекты из старых ведерКомплексность: Ничто

    Примечание: этот способ доступен только при активации опции incremental.

  58. size_typesplit_countconst;

    Требования: инкрементальный<> опция должна быть установлена

    : возвращает текущее количество разбиений

    : Константа

    :Ничего

unordered_set public static functions

  1. static local_iterators_local_iterator_to(ссылказначение);

    : Значение должно быть lvalue и должно быть в неупорядоченный_set соответствующего типа. В противном случае поведение не определено.

    : Возврат: действительный локальный_iterator, принадлежащий неупорядоченный_set, который указывает на значение

    Сложность: Константа.

    Броски: Ничего.

    : Эта статическая функция доступна только в том случае, если значения признаков не имеют состояния.

  2. static const_local_iterators_local_iterator_to(const_referencevalue);

    : Значение должно быть lvalue и должно быть в неупорядоченном_set соответствующего типа. В противном случае поведение не определено.

    : Возврат: действительный локальный_iterator, принадлежащий неупорядоченный_set, который указывает на значение

    Сложность: Константа.

    Броски: Ничего.

    : Эта статическая функция доступна только в том случае, если значения признаков не имеют состояния.

  3. static size_typesuggested_upper_bucket_count(size_type n);

    Возвращает ближайшее новое количество ведра, оптимизированное для контейнера, который больше или равен n. Это предложение может быть использовано для создания ковшовых массивов с размером, который обычно улучшает производительность контейнера. Если такого значения не существует, возвращается более высокое возможное значение.

    Сложность: Амортизированное постоянное время.

    Броски: Ничего.

  4. static size_typesuggested_lower_bucket_count(size_type n);

    Возвращает ближайшее новое количество ведра, оптимизированное для контейнера, который меньше или равен n. Это предложение может быть использовано для создания ковшовых массивов с размером, который обычно улучшает производительность контейнера. Если такого значения не существует, возвращается наименьшее возможное значение.

    Сложность: Амортизированное постоянное время.

    Броски: Ничего.


Статья Class template unordered_set раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:12:41/0.039211988449097/1