Class template set_member_hook
boost::intrusive::set_member_hook
Synopsis
Description
Поставьте общедоступный член данных set_member_hook для хранения объектов этого класса в наборе/мультисете. set_member_hook содержит данные, необходимые для поддержания набора/мультизата и предоставляет соответствующие value_traits класс для набора/мультистата.
Крючок допускает следующие варианты: void_pointer<>, link_mode<> и optimize_size<>.
void_pointer<> - это тип указателя, который будет использоваться внутри крючка и контейнер, настроенный на использование этого крюка.
link_mode<> будет указывать режим подключения крючка (нормальная_ссылка, auto_unlink или safe_link).
optimize_size<> расскажет крючок, чтобы оптимизировать крючок для размера вместо скорости.
set_member_hook
public
construct/copy/destruct
set_member_hook();
Эффекты: Если link_mode является auto_unlink или safe_link инициализирует узел к несвязанному состоянию.
Throws>>
set_member_hook(const set_member_hook &);
Следы: Если <2324>link_mode является auto_unlink или _ссылка Аргумент проигнорирован.
Throws: Nothing.
Rationale: Предоставление копирайт-конструктора делает классы, используя крючок STL-совместимый без принуждения пользователя к дополнительной работе. swap может использоваться для эмулирования подвижной семантики.
set_member_hook & оператор=(const set_member_hook &;;
>Effects: Empty function. Аргумент проигнорирован.
Throws: Nothing.
Rationale: Предоставление оператора уступки делает классы, используя крючок STL-совместимый без принуждения пользователя к дополнительной работе. swap может использоваться для эмулирования подвижной семантики.
~set_member_hook();
Следы: Если link_mode является нормальная_ссылка, деструктор ничего не делает (т.е. не генерируется код). Если link_mode является safe_link и объект хранится в наборе, то возникает утверждение. Если link_mode является auto_unlink и is_linked(), то узел не связан.
Throws: Ничего.
set_member_hook public member functions
void swap_nodes(set_member_hook & other);
Effects: Купление двух узлов меняет положение элементов, связанных с этими узлами в одном или двух контейнерах. То есть, если узел является частью элемента e1, узел x является частью элемента e2 и оба элемента включены в контейнеры s1 и s2, то после того, как обмен-операция e1 находится в s2 в положении e2 и e2 находится в s1 в положении e1. Если один элемент не находится в контейнере, то после замены другой элемент не находится в контейнере.
Комплексность: Постоян
Throws: Nothing.
bool is_linked() const;
Pre condition:link_mode должно быть безопасное_link или auto_unlink
<1718> Эта функция может быть использована для проверки того, вернет ли set::iterator_to действительный итератор.
Сложность: Постоян
void unlink();
Effects: Удаляет узел, если он вставлен в контейнер. Эта функция допускается только в том случае, если link_mode является auto_unlink.
Throws: Nothing.