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

Class template small_vector_allocator

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 small_vector_allocator

boost::container::small_vector_allocator

Synopsis

// In header: <boost/container/small_vector.hpp>
template<typename Allocator> 
class small_vector_allocator : public Allocator {
public:
  // types
  typedef allocator_traits< Allocator >::value_type                             value_type;                            
  typedef allocator_traits< Allocator >::pointer                                pointer;                               
  typedef allocator_traits< Allocator >::const_pointer                          const_pointer;                         
  typedef allocator_traits< Allocator >::reference                              reference;                             
  typedef allocator_traits< Allocator >::const_reference                        const_reference;                       
  typedef allocator_traits< Allocator >::size_type                              size_type;                             
  typedef allocator_traits< Allocator >::difference_type                        difference_type;                       
  typedef allocator_traits< Allocator >::void_pointer                           void_pointer;                          
  typedef allocator_traits< Allocator >::const_void_pointer                     const_void_pointer;                    
  typedef allocator_traits< Allocator >::propagate_on_container_copy_assignment propagate_on_container_copy_assignment;
  typedef allocator_traits< Allocator >::propagate_on_container_move_assignment propagate_on_container_move_assignment;
  typedef allocator_traits< Allocator >::propagate_on_container_swap            propagate_on_container_swap;           
  typedef implementation_defined                                                is_always_equal;                         // An integral constant with member value == false
  typedef implementation_defined                                                is_partially_propagable;                 // An integral constant with member value == true
  // member classes/structs/unions
  template<typename T2> 
  struct rebind {
    // types
    typedef allocator_traits< Allocator >::template rebind_alloc< T2 >::type other;
  };
  // construct/copy/destruct
  template<class... Args> explicit small_vector_allocator(Args &&...);
  small_vector_allocator(const small_vector_allocator &) noexcept;
  small_vector_allocator(small_vector_allocator &&) noexcept;
  template<typename OtherAllocator> 
    small_vector_allocator(const small_vector_allocator< OtherAllocator > &) noexcept;
  template<typename OtherAllocator> 
    small_vector_allocator(small_vector_allocator< OtherAllocator > &&) noexcept;
  small_vector_allocator & operator=(const small_vector_allocator &) noexcept;
  small_vector_allocator & operator=(small_vector_allocator &&) noexcept;
  template<typename OtherAllocator> 
    small_vector_allocator & 
    operator=(const small_vector_allocator< OtherAllocator > &) noexcept;
  template<typename OtherAllocator> 
    small_vector_allocator & 
    operator=(small_vector_allocator< OtherAllocator > &&) noexcept;
  // public member functions
  pointer allocate(size_type, const_void_pointer = const_void_pointer());
  void deallocate(pointer, size_type) noexcept;
  size_type max_size() const noexcept;
  small_vector_allocator select_on_container_copy_construction() const;
  bool storage_is_unpropagable(pointer) const;
  // friend functions
  friend void swap(small_vector_allocator &, small_vector_allocator &) noexcept;
  friend bool operator==(const small_vector_allocator &, 
                         const small_vector_allocator &) noexcept;
  friend bool operator!=(const small_vector_allocator &, 
                         const small_vector_allocator &) noexcept;
};

Description

Нестандартный распределитель, используемый для реализации<small_vector>. Пользователи никогда не должны использовать его напрямую. Он описан здесь для целей документации.

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

Этот распределитель является «частично_распространяемым» распределителем и определяет<is_partially_propagable>как истинный_тип.

Частично распространяемый распределитель означает, что не все аллокаторы хранения с помощью экземпляра<small_vector_allocator>могут быть распределены другим экземпляром этого типа, даже если оба экземпляра сравниваются равными или экземпляр распространяется с другим, используя конструктор копий/перемещений или назначение. Хранилище, которое никогда не может распространяться, определяется<storage_is_unpropagable(p)>.

<boost::container::vector>поддерживает частично распространяемые распределители, резервирующиеся на операции глубокого копирования/свопа/перемещения, когда внутреннее хранилище используется для хранения векторных элементов.

<small_vector_allocator>предполагает, что будет инстанцирован как<boost::container::vector< T,small_vector_allocator<Allocator> >>и внутреннее хранилище может быть получено ниспровержением этого вектора до<small_vector_base<T>>.

small_vector_allocator public construct/copy/destruct

  1. <
    template<class...Args>explicitsmall_vector_allocator(Args&&...args);
    >Конструктор из произвольных аргументов.
  2. <
    small_vector_allocator(constsmall_vector_allocator&other)noexcept;
    >

    Конструктор из других<small_vector_allocator>. Никогда не бросайте

  3. <
    small_vector_allocator(small_vector_allocator&&other)noexcept;
    >

    Переведите конструктор<small_vector_allocator>. Никогда не бросайте

  4. <
    template<typenameOtherAllocator>
     small_vector_allocator(constsmall_vector_allocator<OtherAllocator>&other)noexcept;
    >

    Конструктор из родственных<small_vector_allocator>. Никогда не бросайте

  5. <
    template<typenameOtherAllocator>
     small_vector_allocator(small_vector_allocator<OtherAllocator>&&other)noexcept;
    >

    Переместить конструктора из родственных<small_vector_allocator>. Никогда не бросайте

  6. <
    small_vector_allocator&
    operator=(constsmall_vector_allocator&other)noexcept;
    >

    Уступка от других<small_vector_allocator>. Никогда не бросайте

  7. <
    small_vector_allocator&operator=(small_vector_allocator&&other)noexcept;
    >

    Переместить конструктора из других<small_vector_allocator>. Никогда не бросайте

  8. <
    template<typenameOtherAllocator>
     small_vector_allocator&
     operator=(constsmall_vector_allocator<OtherAllocator>&other)noexcept;
    >

    Отделение от родственных<small_vector_allocator>. Никогда не бросайте

  9. <
    template<typenameOtherAllocator>
     small_vector_allocator&
     operator=(small_vector_allocator<OtherAllocator>&&other)noexcept;
    >

    Перейдите от связанного<small_vector_allocator>. Никогда не бросайте

small_vector_allocator public member functions

  1. <
    pointerallocate(size_typecount,
                    const_void_pointerhint=const_void_pointer());
    >Выделяет хранение из стандартно-соответствующего распределителя.
  2. <
    voiddeallocate(pointerptr,size_typen)noexcept;
    >

    Выделяет ранее выделенную память. Никогда не бросайте

  3. <
    size_typemax_size()constnoexcept;
    >

    Возвращает максимальное количество элементов, которые можно было бы выделить. Никогда не бросайте

  4. <
    small_vector_allocatorselect_on_container_copy_construction()const;
    >
  5. <
    boolstorage_is_unpropagable(pointerp)const;
    >

small_vector_allocator friend functions

  1. <
    friendvoidswap(small_vector_allocator&l,small_vector_allocator&r)noexcept;
    >

    Заменяет двух распределителей, ничего не делает, потому что это<small_vector_allocator>без гражданства

  2. <
    friendbooloperator==(constsmall_vector_allocator&l,
                          constsmall_vector_allocator&r)noexcept;
    >

    <small_vector_allocator>всегда сравнивается с истинным, поскольку память, выделенная одним экземпляром, может быть размещена другим экземпляром (за исключением нераспространяемого хранилища)

    .
  3. <
    friendbooloperator!=(constsmall_vector_allocator&l,
                          constsmall_vector_allocator&r)noexcept;
    >

    <small_vector_allocator>всегда сравнивается с ложным, так как память, выделенная одним экземпляром, может быть размещена другим экземпляром

    .

PrevUpHomeNext

Статья Class template small_vector_allocator раздела 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-05-20 07:19:37/0.0092759132385254/1