А.node_handleявляется объектом, который принимает в собственность один элемент из ассоциативного контейнера. Он может быть использован для передачи этого права собственности другому контейнеру с совместимыми узлами. Контейнеры с совместимыми узлами имеют одинаковый тип ручки узла. Элементы могут передаваться в любом направлении между типами контейнеров в одной строке:
Типы контейнеров с совместимыми узлами
map<->map
map<->multimap
set<->set
set<->multiset
Если ручка узла не пуста, то она содержит распределитель, равный распределителю контейнера при извлечении элемента. Если ручка узла пуста, она не содержит распределителя.
Эффекты: Конструирует<node_handle>объект, инициализирующий внутренний указатель с помощью p. Если p ! = nullptr копия строит внутренний распределитель al.
Эффекты: Конструирует<node_handle>объект, инициализирующий внутренний указатель с соответствующим внутренним указателем nh, и присваивает нульприт более позднему. Если внутренний указатель nh не был nullptr, переместить конструирует внутренний распределитель с внутренним распределителем nh и уничтожить внутренний распределитель nh.
Постусловие: nh.empty()
Примечание: Два<node_handle>связаны, если только один из параметров шаблона KeyMapped ручки узла является недействительным.
Эффекты: Конструирует<node_handle>объект, инициализирующий внутренний указатель с внутренним указателем nh и присваивает нульприт более позднему. Если внутренний указатель nh не был nullptr, переместить конструирует внутренний распределитель с внутренним распределителем nh и уничтожить внутренний распределитель nh.
Требуется: Либо это->empty(), либо ator_traits::propagate_on_container_move_assignment истинно, либо node_alloc() == nh.node_alloc().
Эффекты: Если m_ptr != nullptr, уничтожает значение_тип подобъекта в контейнере_node_type объекта, на который указывает m_ptr, вызывая ator_traits::destroy, то деллокирует m_ptr, вызывая ator_-traits::rebind_traits::deallocate. Назначает nh.m_ptr на m_ptr. Если это->empty() или ator_traits::propagate_on_container_move_assignment верно, перемещение присваивает nh.node_alloc() узлу_alloc(). Назначает nullptr на nh.m_ptr и присваивает nullopt nh.node_alloc().Возвращается: *это.
Бросает: Ничего.
<
~node_handle();
>
Эффекты: Если !this->empty(), уничтожает значение_тип подобъекта в контейнере_node_type объекта, на который указывает c, позвонив allocator_traits::destroy, то деллокирует m_ptr, позвонив по ator_traits::rebind_traits::deallocate.
node_handle public member functions
<
value_type&value()constnoexcept;
>
Требует: пустой() == ложный.
Возвращение: Ссылка на значение_тип подобъекта в контейнере_узел_тип объекта, на который указывает m_ptr
Бросает: Ничего.
<
key_type&key()constnoexcept;
>
Требует: пустой() == ложный.
Возвращение: Неконст-ссылка на элемент ключевого_типа подобъекта значения_типа в объекте контейнерного_узла_типа, на который указывает m_ptr.
Бросает: Ничего.
Требуется: Допускается изменение ключа через возвращенную ссылку.
<
mapped_type&mapped()constnoexcept;
>
Требует: пустой() == ложный.
Возвращение: Ссылка на отображенный_типовый элемент подобъекта значения_типа в контейнере_узел_типа, на который указывает m_ptr
Требует: это->empty(), или nh.empty(), или ator_traits::propagate_on_container_swap является истинным, или node_alloc() == nh.node_alloc().
: Звонки swap(m_ptr, nh.m_ptr). Если это->empty(), или nh.empty(), или ator_traits::propagate_on_-container_swap - это истинные вызовы swap(node_alloc(), nh.node_alloc()).
Статья Class template node_handle раздела The Boost C++ Libraries BoostBook Documentation Subset Boost.Container Header Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.