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

Class template 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 allocator

boost::container::allocator

Synopsis

// In header: <boost/container/allocator.hpp>
template<typename T, unsigned Version = 2, 
         unsigned int AllocationDisableMask = 0> 
class allocator {
public:
  // types
  typedef T              value_type;     
  typedef T *            pointer;        
  typedef const T *      const_pointer;  
  typedef T &            reference;      
  typedef const T &      const_reference;
  typedef std::size_t    size_type;      
  typedef std::ptrdiff_t difference_type;
  typedef unspecified    version;        
  // member classes/structs/unions
  template<typename T2> 
  struct rebind {
    // types
    typedef allocator< T2, Version, AllocationDisableMask > other;
  };
  // construct/copy/destruct
  allocator() noexcept;
  allocator(const allocator &) noexcept;
  template<typename T2> allocator(const allocator< T2 > &) noexcept;
  // public member functions
  pointer allocate(size_type, const void * = 0);
  void deallocate(pointer, size_type) noexcept;
  size_type max_size() const noexcept;
  pointer allocation_command(allocation_type, size_type, size_type &, 
                             pointer &);
  size_type size(pointer) const noexcept;
  pointer allocate_one();
  void allocate_individual(std::size_t, multiallocation_chain &);
  void deallocate_one(pointer) noexcept;
  void deallocate_individual(multiallocation_chain &) noexcept;
  void allocate_many(size_type, std::size_t, multiallocation_chain &);
  void allocate_many(const size_type *, size_type, multiallocation_chain &);
  void deallocate_many(multiallocation_chain &) noexcept;
  // friend functions
  friend void swap(self_t &, self_t &) noexcept;
  friend bool operator==(const allocator &, const allocator &) noexcept;
  friend bool operator!=(const allocator &, const allocator &) noexcept;
  // private member functions
  pointer priv_allocation_command(allocation_type, std::size_t, size_type &, 
                                  pointer &);
};

Description

Этот класс является расширенным STL-совместимым, который предлагает расширенный механизм распределения (расширение на месте, сокращение, выделение лопастей ...)

Этот распределитель - обертка вокруг модифицированного DLmalloc. Если версия 1, то распределитель представляет собой распределитель, соответствующий STL. Если версия 2, распределитель предлагает расширенные возможности расширения и разрыва распределения.

Allocation Disable Маска работает только в том случае, если Версия 2 и она может быть инклюзивной ИЛИ типов распределения, которые пользователь хочет отключить.

allocator public construct/copy/destruct

  1. <
    allocator()noexcept;
    >

    Конструктор по умолчанию никогда не бросает

  2. <
    allocator(constallocator&)noexcept;
    >

    Конструктор от другого распределителя. Никогда не бросать

  3. <
    template<typenameT2>allocator(constallocator<T2>&)noexcept;
    >

    Конструктор от связанного распределителя. Никогда не бросать

allocator public member functions

  1. <
    pointerallocate(size_typecount,constvoid*hint=0);
    >

    Выделяет память для массива счетных элементов. Оригинальное название: Bad_alloc Если памяти недостаточно Если версия 2, эта выделенная память может быть размещена только с помощью deallocate() или (для версии == 2) deallocate_many().

  2. <
    voiddeallocate(pointerptr,size_type)noexcept;
    >

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

  3. <
    size_typemax_size()constnoexcept;
    >

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

  4. <
    pointerallocation_command(allocation_typecommand,size_typelimit_size,
                              size_type&prefer_in_recvd_out_size,
                              pointer&reuse);
    >

    Продвинутая функция, которая предлагает расширение на месте, уменьшается в соответствии с новыми возможностями распределения. Память, выделенная с этой функцией, может быть размещена только с помощью deallocate() или deallocate_many(). Эта функция доступна только с версией == 2

  5. <
    size_typesize(pointerp)constnoexcept;
    >

    Возвращает максимальное количество объектов, которые может удерживать ранее выделенная память, указанная p. Память не должна быть выделена с выделением_one или выделением_individual. Эта функция доступна только с версией == 2

  6. <
    pointerallocate_one();
    >

    Выделяют только один объект. Память, выделенная с этой функцией, должна быть размещена только с помощью deallocate_one(). Бросает bad_alloc, если памяти недостаточно Эта функция доступна только с версией == 2

  7. <
    voidallocate_individual(std::size_tnum_elements,
                            multiallocation_chain&chain);
    >

    Выделяет множество элементов размера == 1. Элементы должны быть индивидуально размещены с помощью deallocate_one() Эта функция доступна только с версией == 2

  8. <
    voiddeallocate_one(pointerp)noexcept;
    >

    Выделяет память, ранее выделенную с выделением_one(). Вы никогда не должны использовать deallocate_one для обработки памяти, выделенной с другими функциями, отличными от allocate_one() или allocate_individual.

  9. <
    voiddeallocate_individual(multiallocation_chain&chain)noexcept;
    >

    Выделяет память, выделенную с выделением_one() или выделением_individual(). Эта функция доступна только с версией == 2

  10. <
    voidallocate_many(size_typeelem_size,std::size_tn_elements,
                      multiallocation_chain&chain);
    >

    Выделяют множество элементов размера elem_size. Элементы должны быть индивидуально размещены с помощью deallocate() Эта функция доступна только с версией == 2

  11. <
    voidallocate_many(constsize_type*elem_sizes,size_typen_elements,
                      multiallocation_chain&chain);
    >

    Выделяет элементы n_элементов, каждый из которых имеет размер elem_sizes[i] Элементы должны быть индивидуально размещены с помощью deallocate() Эта функция доступна только с версией == 2

  12. <
    voiddeallocate_many(multiallocation_chain&chain)noexcept;
    >

    Выделяет несколько элементов, выделенных посредством выделения_many(), выделения() или выделения_command(). Эта функция доступна только с версией == 2

allocator friend functions

  1. <
    friendvoidswap(self_t&,self_t&)noexcept;
    >

    Заменяет два распределителя, ничего не делает, потому что этот распределитель не имеет гражданства

    .
  2. <
    friendbooloperator==(constallocator&,constallocator&)noexcept;
    >

    Распределитель всегда сравнивается с истинным, так как память, выделенная одним экземпляром, может распределяться другим экземпляром

    .
  3. <
    friendbooloperator!=(constallocator&,constallocator&)noexcept;
    >

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

    .

allocator private member functions

  1. <
    pointerpriv_allocation_command(allocation_typecommand,
                                   std::size_tlimit_size,
                                   size_type&prefer_in_recvd_out_size,
                                   pointer&reuse_ptr);
    >

PrevUpHomeNext

Статья Class template 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-19 19:03:39/0.027040004730225/1