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

Struct template allocator_traits

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

Struct template allocator_traits

boost::container::allocator_traits

Synopsis

// In header: <boost/container/allocator_traits.hpp>
template<typename Allocator> 
struct allocator_traits {
  // types
  typedef Allocator                             allocator_type;                        
  typedef allocator_type::value_type            value_type;                            
  typedef unspecified                           pointer;                               
  typedef see_documentation                     const_pointer;                         
  typedef see_documentation                     reference;                             
  typedef see_documentation                     const_reference;                       
  typedef see_documentation                     void_pointer;                          
  typedef see_documentation                     const_void_pointer;                    
  typedef see_documentation                     difference_type;                       
  typedef see_documentation                     size_type;                             
  typedef see_documentation                     propagate_on_container_copy_assignment;
  typedef see_documentation                     propagate_on_container_move_assignment;
  typedef see_documentation                     propagate_on_container_swap;           
  typedef see_documentation                     is_always_equal;                       
  typedef see_documentation                     is_partially_propagable;               
  typedef see_documentation                     rebind_alloc;                          
  typedef allocator_traits< rebind_alloc< T > > rebind_traits;                         
  // member classes/structs/unions
  template<typename T> 
  struct portable_rebind_alloc {
    // types
    typedef see_documentation type;
  };
  // public static functions
  static pointer allocate(Allocator &, size_type);
  static void deallocate(Allocator &, pointer, size_type);
  static pointer allocate(Allocator &, size_type, const_void_pointer);
  template<typename T> static void destroy(Allocator &, T *) noexcept;
  static size_type max_size(const Allocator &) noexcept;
  static Allocator select_on_container_copy_construction(const Allocator &);
  template<typename T, class... Args> 
    static void construct(Allocator &, T *, Args &&...);
  static bool storage_is_unpropagable(const Allocator &, pointer) noexcept;
  static bool equal(const Allocator &, const Allocator &) noexcept;
};

Description

Шаблон классаallocator_traitsобеспечивает единый интерфейс для всех типов распределителей. Этот класс представляет собой C++03-совместимую реализацию std::allocator_traits

allocator_traits public types

  1. TypedefНе уточняетсяуказатель;

    Распределитель:: указатель, если такой тип существует; в противном случае значение_тип*

  2. typedefsee_documentationconst_pointer;

    Allocator::const_pointer, если такой тип существует; в противном случае pointer_traits::rebind

  3. typedefсм._documentationreference;

    Nonstandard extension Allocator::ference if such type exist; other, value_type&

  4. typedefсм._documentationconst_reference;

    Нестандартное расширение Выделитель::const_reference, если такой тип существует; в противном случае, const value_type&

  5. typedefсм._documentationvoid_pointer;

    Allocator::void_pointer, если такой тип существует; в противном случае pointer_traits::rebind.

  6. typedefsee_documentationconst_void_pointer;

    Allocator::const_void_pointer, если такой тип существует; otherwis e, pointer_traits::rebind

  7. typedefсм._documentationdifference_type;

    Выделитель::difference_type, если такой тип существует; в противном случае pointer_traits::difference_type.

  8. typedefсм._documentationsize_type;

    Выделитель::size_type, если такой тип существует; в противном случае make_unsigned::type

  9. typedefсм._documentationpropagate_on_container_copy_assignment;

    Выделитель::propagate_on_container_copy_assignment, если такой тип существует, иначе тип с внутренним постоянным статическим булевым элементом<value>== ложный.

  10. typedefсм._documentationpropagate_on_container_move_assignment;

    Выделитель::propagate_on_container_move_assignment, если такой тип существует, иначе тип с внутренним постоянным статическим булевым элементом<value>== false.

  11. typedefсм._documentationpropagate_on_container_swap;

    Выделитель::propagate_on_container_swap, если такой тип существует, иначе тип с внутренним постоянным статическим булевым элементом<value>== ложный.

  12. typedefsee_documentationis_always_equal;

    Allocator::is_always_equal, если такой тип существует, в противном случае тип с внутренним постоянным статическим булевым элементом<value>== is_empty< Allocator>::value

  13. typedefsee_documentationis_partially_propagable;

    Выделитель::is_partially_propagable, если такой тип существует, иначе тип с внутренним постоянным статическим булевым элементом<value>== ложныйПримечание: Нестандартное расширение, используемое для реализации<small_vector_allocator>.

  14. typedefsee_documentationrebind_alloc;

    Определение распределителя: Allocator::rebind< T>::другой, если такой тип существует; в противном случае, Allocatorесли Allocator представляет собой шаблон класса, инстанциацию формы Allocator, где Args является аргументом нулевого или более типа; в противном случае, инстанциация rebind_alloc плохо сформирована.

    В компиляторах C++03<rebind_alloc>есть структура, полученная из распределителя, выведенного ранее подробными правилами.

  15. typedefallocator_traits<rebind_alloc<T>>rebind_traits;

    В компиляторах C++03<rebind_traits>есть структура, полученная из<allocator_traits<OtherAlloc>>, где<OtherAlloc>является распределителем, выведенным правилами, объясненными в<rebind_alloc>

    .

allocator_traits public static functions

  1. <
    staticpointerallocate(Allocator&a,size_typen);
    >

    Возвращение:<a.allocate(n)>

  2. <
    staticvoiddeallocate(Allocator&a,pointerp,size_typen);
    >

    Возвращается:<a.deallocate(p, n)>

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

  3. <
    staticpointerallocate(Allocator&a,size_typen,const_void_pointerp);
    >

    Эффекты: вызовы<a.allocate(n, p)>, если этот вызов хорошо сформирован; в противном случае вызывает<a.allocate(n)>

  4. <
    template<typenameT>staticvoiddestroy(Allocator&a,T*p)noexcept;
    >

    Эффекты: вызовы<a.destroy(p)>, если этот вызов хорошо сформирован; в противном случае вызывает<p->~T()>

    .
  5. <
    staticsize_typemax_size(constAllocator&a)noexcept;
    >

    Возвращается:<a.max_size()>, если это выражение хорошо сформировано; в противном случае<numeric_limits<size_type>::max()>

    .
  6. <
    staticAllocatorselect_on_container_copy_construction(constAllocator&a);
    >

    Возвращает:<a.select_on_container_copy_construction()>, если это выражение хорошо сформировано; в противном случае, a.

  7. <
    template<typenameT,class...Args>
     staticvoidconstruct(Allocator&a,T*p,Args&&...args);
    >

    Эффекты: вызовы<a.construct(p, std::forward<Args>(args)...)>, если этот вызов хорошо сформирован; в противном случае вызывает<::new (static_cast<void*>(p)) T(std::forward<Args>(args)...)>

  8. <
    staticboolstorage_is_unpropagable(constAllocator&a,pointerp)noexcept;
    >

    Возвращает:<a.storage_is_unpropagable(p)>, если является_частично_распространяемым:: значение истинно; в противном случае<false>

    .
  9. <
    staticboolequal(constAllocator&a,constAllocator&b)noexcept;
    >

    Возвращение:<true>, если<is_always_equal::value == true>, в противном случае<a == b>

    .

PrevUpHomeNext

Статья Struct template allocator_traits раздела 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 05:56:17/0.0092010498046875/1