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

Class template node_handle

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Boost.Container Header 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 node_handle

boost::container::node_handle

Synopsis

// In header: <boost/container/node_handle.hpp>
template<typename NodeType, typename Value, typename Allocator, 
         typename KeyMapped = void> 
class node_handle {
public:
  // types
  typedef Value                    value_type;         
  typedef keymapped_t::key_type    key_type;           
  typedef keymapped_t::mapped_type mapped_type;        
  typedef Allocator                allocator_type;     
  typedef NodeType                 container_node_type;
  // construct/copy/destruct
  node_handle() noexcept;
  node_handle(node_pointer, const nallocator_type &) noexcept;
  template<typename KeyMapped2> 
    node_handle(node_handle< NodeType, Value, Allocator, KeyMapped2 > &&, 
                unspecified = 0);
  node_handle(node_handle &&) noexcept;
  node_handle & operator=(node_handle &&);
  ~node_handle();
  // public member functions
  value_type & value() const noexcept;
  key_type & key() const noexcept;
  mapped_type & mapped() const noexcept;
  allocator_type get_allocator() const;
  explicit operator bool() const noexcept;
  bool empty() const noexcept;
  void swap(node_handle &) noexcept(ator_traits::propagate_on_container_swap::value||ator_traits::is_always_equal::value));
  // friend functions
  friend void swap(node_handle &, node_handle &) noexcept(BOOST_NOEXCEPT(x.swap(y))));
};

Description

А.node_handleявляется объектом, который принимает в собственность один элемент из ассоциативного контейнера. Он может быть использован для передачи этого права собственности другому контейнеру с совместимыми узлами. Контейнеры с совместимыми узлами имеют одинаковый тип ручки узла. Элементы могут передаваться в любом направлении между типами контейнеров в одной строке:

Типы контейнеров с совместимыми узлами

map<->map

map<->multimap

set<->set

set<->multiset

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

node_handle public construct/copy/destruct

  1. <
    node_handle()noexcept;
    >

    Эффекты: Инициирует m_ptr к нульптру.

    Посткондиционер: это->пустая()

  2. <
    node_handle(node_pointerp,constnallocator_type&al)noexcept;
    >

    Эффекты: Конструирует<node_handle>объект, инициализирующий внутренний указатель с помощью p. Если p ! = nullptr копия строит внутренний распределитель al.

  3. <
    template<typenameKeyMapped2>
     node_handle(node_handle<NodeType,Value,Allocator,KeyMapped2>&&nh,
                 unspecified=0);
    >

    Эффекты: Конструирует<node_handle>объект, инициализирующий внутренний указатель с соответствующим внутренним указателем nh, и присваивает нульприт более позднему. Если внутренний указатель nh не был nullptr, переместить конструирует внутренний распределитель с внутренним распределителем nh и уничтожить внутренний распределитель nh.

    Постусловие: nh.empty()

    Примечание: Два<node_handle>связаны, если только один из параметров шаблона KeyMapped ручки узла является недействительным.

  4. <
    node_handle(node_handle&&nh)noexcept;
    >

    Эффекты: Конструирует<node_handle>объект, инициализирующий внутренний указатель с внутренним указателем nh и присваивает нульприт более позднему. Если внутренний указатель nh не был nullptr, переместить конструирует внутренний распределитель с внутренним распределителем nh и уничтожить внутренний распределитель nh.

    Посткондиционер: nh.empty()

  5. <
    node_handle&operator=(node_handle&&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().Возвращается: *это.

    Бросает: Ничего.

  6. <
    ~node_handle();
    >

    Эффекты: Если !this->empty(), уничтожает значение_тип подобъекта в контейнере_node_type объекта, на который указывает c, позвонив allocator_traits::destroy, то деллокирует m_ptr, позвонив по ator_traits::rebind_traits::deallocate.

node_handle public member functions

  1. <
    value_type&value()constnoexcept;
    >

    Требует: пустой() == ложный.

    Возвращение: Ссылка на значение_тип подобъекта в контейнере_узел_тип объекта, на который указывает m_ptr

    Бросает: Ничего.

  2. <
    key_type&key()constnoexcept;
    >

    Требует: пустой() == ложный.

    Возвращение: Неконст-ссылка на элемент ключевого_типа подобъекта значения_типа в объекте контейнерного_узла_типа, на который указывает m_ptr.

    Бросает: Ничего.

    Требуется: Допускается изменение ключа через возвращенную ссылку.

  3. <
    mapped_type&mapped()constnoexcept;
    >

    Требует: пустой() == ложный.

    Возвращение: Ссылка на отображенный_типовый элемент подобъекта значения_типа в контейнере_узел_типа, на который указывает m_ptr

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

  4. <
    allocator_typeget_allocator()const;
    >

    Требует: пустой() == ложный.

    Возвращение: Копия внутреннего распределителя.

    Бросает: Ничего.

  5. <
    explicitoperatorbool()constnoexcept;
    >

    Возвращение: m_ptr !=nullptr.

  6. <
    boolempty()constnoexcept;
    >

    Возвращение: m_ptr == nullptr.

  7. <
    voidswap(node_handle&nh)noexcept(ator_traits::propagate_on_container_swap::value||ator_traits::is_always_equal::value));
    >

    Требует: это->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()).

node_handle friend functions

  1. <
    friendvoidswap(node_handle&x,node_handle&y)noexcept(BOOST_NOEXCEPT(x.swap(y))));
    >

    Эффекты: x.swap(y).


PrevUpHomeNext

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




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



:: Главная :: Boost.Container Header Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 22:25:54/0.0072078704833984/0