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

Class template adaptive_pool

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 adaptive_pool

boost::container::adaptive_pool

Synopsis

// In header: <boost/container/adaptive_pool.hpp>
template<typename T, std::size_t NodesPerBlock = ADP_nodes_per_block, 
         std::size_t MaxFreeBlocks = ADP_max_free_blocks, 
         std::size_t OverheadPercent = ADP_overhead_percent> 
class adaptive_pool {
public:
  // types
  typedef unsigned int                                                      allocation_type;
  typedef adaptive_pool< T, NodesPerBlock, MaxFreeBlocks, OverheadPercent > self_t;         
  typedef T                                                                 value_type;     
  typedef T *                                                               pointer;        
  typedef const T *                                                         const_pointer;  
  typedef unspecified                                                       reference;      
  typedef unspecified                                                       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 adaptive_pool< T2, NodesPerBlock, MaxFreeBlocks, OverheadPercent > other;
  };
  // construct/copy/destruct
  adaptive_pool() noexcept;
  adaptive_pool(const adaptive_pool &) noexcept;
  template<typename T2> 
    adaptive_pool(const adaptive_pool< T2, NodesPerBlock, MaxFreeBlocks, OverheadPercent BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)> &) noexcept;
  ~adaptive_pool();
  // public member functions
   BOOST_CONTAINER_DOCIGN(BOOST_STATIC_ASSERT((Version<=2)));
  size_type max_size() const noexcept;
  pointer allocate(size_type, const void * = 0);
  void deallocate(const pointer &, size_type) 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;
  // public static functions
  static void deallocate_free_blocks() noexcept;
  // friend functions
  friend void swap(adaptive_pool &, adaptive_pool &) noexcept;
  friend bool operator==(const adaptive_pool &, const adaptive_pool &) noexcept;
  friend bool operator!=(const adaptive_pool &, const adaptive_pool &) noexcept;
  // private member functions
  pointer priv_allocation_command(allocation_type, std::size_t, size_type &, 
                                  pointer &);
  // public data members
  static const std::size_t nodes_per_block;
  static const std::size_t max_free_blocks;
  static const std::size_t overhead_percent;
  static const std::size_t real_nodes_per_block;
};

Description

Аллокатор узла STL, который использует модифицированный DLMalloc в качестве источника памяти.

Этот распределитель узлов делит отдельное хранилище между всеми экземплярами adaptive_pool с равным размером (T).

NodesPerBlock - это количество узлов, выделенных одновременно, когда у распределителя заканчиваются узлы. MaxFreeBlocks - это максимальное количество полностью свободных блоков, которые будет поддерживать бассейн адаптивных узлов. Остальные свободные блоки будут переданы менеджеру памяти.

OverheadPercent - это (приблизительный) максимальный размер накладных расходов (1-20%) распределителя: (память, используемая для узлов / общая память, выделенная из распределителя памяти)

adaptive_pool public types

  1. typedef unsigned int allocation_type;

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

adaptive_pool public construct/copy/destruct

  1. adaptive_pool()за исключением;
    Конструктор по умолчанию.
  2. adaptive_pool(constadaptive_pool &)за исключением ;
    Копирование конструктора из других adaptive_pool.
  3. templatetypename T2>(adaptive_pooladaptive_pool,NodesPerBlock, MaxFreeBlocks, BOOST_CONTAINER_DOCIGNBOOST_MOVE_I>&, за исключением ;
    Конструктор копий из родственного adaptive_pool.
  4. ~adaptive_pool();
    Destructor.

adaptive_pool public member functions

  1.  BOOST_CONTAINER_DOCIGN(BOOST_STATIC_ASSERT((Version<=);
  2. size_type max_size() const за исключением ;

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

  3. pointerallocate(size_type, const void =;2>

    Выделите память для массива элементов счета. Бросает std::bad_alloc, если памяти недостаточно

  4. void deallocate(const pointer & ptr, size_type count) , за исключением ;

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

  5. pointerallocation_command(allocation_type command, size_type limit_size, size_type  & prefer_in_recvd_out_size, pointer  & reuse;
  6. size_type size(pointer p) constno except;

    Возвращает максимальное количество объектов, которые может удерживать ранее выделенная память, заданная p.

  7. pointer allocate_one();

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

  8. void allocate_individual(std::size_t num_elements, multiallocation_chain& chain;

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

  9. voiddeallocate_one(pointer p)за исключением;

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

  10. void deallocate_individual(multiallocation_chain& chain>no except;
  11. void allocate_many(size_size, std::size_t n_elements, multiallocation_chain&цепь;;

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

  12. void allocate_many(const size_type, size_type, multiallocation_chain & цепь;

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

  13. void deallocate_many(multiallocation_chain & chain>no except;

adaptive_pool public static functions

  1. static voiddeallocate_free_blocks()за исключением;
    Выделяет все свободные блоки пула.

adaptive_pool friend functions

  1. friend voidswap(adaptive_pool , adaptive_pool &), за исключением ;

    Своповые распределители. Не бросает. Если каждый распределитель помещается в отдельный сегмент памяти, результат не определен.

  2. friend boolоператор(constadaptive_pool,constadaptive_pool&), за исключением ;

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

  3. friend boolоператор!=констадаптивный_пул,,констадаптивный_пул& &, за исключением ;

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

adaptive_pool private member functions

  1. pointerpriv_allocation_command(allocation_type,std::size_t limit_size, size_type &pointer& reuse_ptr;

PrevUpHomeNext

Статья Class template adaptive_pool раздела 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:43:18/0.0078260898590088/0