Class template unordered_set_base_hook
boost::intrusive::unordered_set_base_hook
Synopsis
Description
Выберите класс изunordered_set_base_hookдля хранения объектов в неупорядоченном_set/неупорядоченном_multi_set.unordered_set_base_hookсодержит данные, необходимые для поддержания неупорядоченного_set/неупорядоченного_multi_set и обеспечивает соответствующийЦенностные чертыкласс для unordered_set/unordered_multi_set.
Крючок допускает следующие варианты:<tag<>
>,<void_pointer<>
>,<link_mode<>
>,<store_hash<>
>и<optimize_multikey<>
>.
<tag<>
>определяет тег для идентификации узла. Одно и то же значение тега может использоваться в разных классах, но если класс получен из более чем одного<list_base_hook
>, то каждый<list_base_hook
>нуждается в своем уникальном теге.
<void_pointer<>
>- тип указателя, который будет использоваться внутри крючка и контейнера, сконфигурированного для использования этого крючка.
<link_mode<>
>будет указывать способ соединения крючка<normal_link
>,<auto_unlink
>или<safe_link
>.
<store_hash<>
>скажет крюку, чтобы он хранил хеш значения для ускорения пересказов.
<optimize_multikey<>
>скажет крюку хранить ссылку для формирования группы с другим значением с тем же значением, чтобы ускорить поиски и вставки в unordered_multisets с большим количеством эквивалентных ключей.
unordered_set_base_hook
public
construct/copy/destruct
- <
unordered_set_base_hook();
>Эффекты: Если<link_mode
><auto_unlink
>или<safe_link
>инициализирует узел в несвязанное состояние.
Бросает: Ничего.
- <
unordered_set_base_hook(constunordered_set_base_hook&);
>Эффекты: Если<link_mode
><auto_unlink
>или<safe_link
>инициализирует узел в несвязанное состояние. Аргумент игнорируется.
Бросает: Ничего.
Обоснование: Предоставление копи-конструктора делает занятия с помощью крючка STL-совместимыми, не заставляя пользователя выполнять какую-то дополнительную работу.<swap
>может использоваться для эмуляции подвижной семантики.
- <
unordered_set_base_hook&operator=(constunordered_set_base_hook&);
>Эффекты: Пустая функция. Аргумент игнорируется.
Бросает:
Обоснование: Предоставление оператора присваивания делает классы с использованием крючка STL-совместимыми, не заставляя пользователя выполнять некоторую дополнительную работу.<swap
>может использоваться для эмуляции подвижной семантики.
- <
~unordered_set_base_hook();
>Эффекты: Если<link_mode
><normal_link
>, деструктор ничего не делает (т.е. код не генерируется). Если<link_mode
><safe_link
>и объект хранится в<unordered_set
>, то высказывание поднимается. Если<link_mode
><auto_unlink
>и<is_linked()
>истинно, то узел несвязан.
Бросает: Ничего.
unordered_set_base_hook
public member functions
- <
voidswap_nodes(unordered_set_base_hook&other);
>Эффекты: Переключение двух узлов меняет положение элементов, связанных с этими узлами, в одном или двух контейнерах. То есть, если узел является частью элемента e1, узел x является частью элемента e2 и оба элемента включены в контейнеры s1 и s2, то после операции обмена e1 находится в s2 в положении e2, а e2 находится в s1 в положении e1. Если один элемент не находится в контейнере, то после операции обмена другой элемент не находится в контейнере. Итераторы e1 и e2, относящиеся к этим узлам, недействительны.
Сложность: Постоянная
Броски: Ничего.
- <
boolis_linked()const;
>Предварительное условие:<link_mode
>должно быть<safe_link
>или<auto_unlink
>.
Возврат: истинно, если узел принадлежит контейнеру, ложно в противном случае. Эта функция может использоваться для проверки того, вернет ли<unordered_set::iterator_to
>действительный итератор.
Сложность: Константа
- <
voidunlink();
>Эффекты: Удаляет узел, если он вставлен в контейнер. Эта функция допускается только в том случае, если<link_mode
><auto_unlink
>.
Бросок: Ничего.