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

Class template polymorphic_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 polymorphic_allocator

boost::container::pmr::polymorphic_allocator

Synopsis

// In header: <boost/container/pmr/polymorphic_allocator.hpp>
template<typename T> 
class polymorphic_allocator {
public:
  // types
  typedef T value_type;
  // construct/copy/destruct
  polymorphic_allocator() noexcept;
  polymorphic_allocator(memory_resource *);
  polymorphic_allocator(const polymorphic_allocator &);
  template<typename U> 
    polymorphic_allocator(const polymorphic_allocator< U > &) noexcept;
  polymorphic_allocator & operator=(const polymorphic_allocator &);
  // public member functions
  T * allocate(size_t);
  void deallocate(T *, size_t);
  template<typename U, class... Args> void construct(U *, Args &&...);
  template<typename U> void destroy(U *);
  polymorphic_allocator select_on_container_copy_construction() const;
  memory_resource * resource() const;
};

Description

Специализация шаблона класса<polymorphic_allocator>соответствует требованиям Allocator. Построенные с различными ресурсами памяти, различные экземпляры одной и той же специализации могут проявлять совершенно разное поведение распределения. Этот полиморфизм времени выполнения позволяет объектам, которые используютpolymorphic_allocator, вести себя так, как если бы они использовали разные типы распределителей во время выполнения, даже если они используют один и тот же тип статического распределителя.

polymorphic_allocator public construct/copy/destruct

  1. <
    polymorphic_allocator()noexcept;
    >

    Эффекты: Устанавливает m_resource до<get_default_resource()>.

  2. <
    polymorphic_allocator(memory_resource*r);
    >

    Требуется: r не является нулевым.

    Эффекты: Устанавливает m_resource на r.

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

    Примечания: Этот конструктор обеспечивает имплицитное преобразование из Memory_resource*. Нестандартное расширение: если r равно нулю, m_resource настроен на get_default_resource().

  3. <
    polymorphic_allocator(constpolymorphic_allocator&other);
    >

    Эффекты: Устанавливает m_resource to other.resource().

  4. <
    template<typenameU>
     polymorphic_allocator(constpolymorphic_allocator<U>&other)noexcept;
    >

    Эффекты: Устанавливает m_resource to other.resource().

  5. <
    polymorphic_allocator&operator=(constpolymorphic_allocator&other);
    >

    Эффекты: Устанавливает m_resource to other.resource().

polymorphic_allocator public member functions

  1. <
    T*allocate(size_tn);
    >

    Возвращение: Это эквивалентно<static_cast<T*>(m_resource->allocate(n * sizeof(T), alignof(T)))>

    .
  2. <
    voiddeallocate(T*p,size_tn);
    >

    Требуется: p был выделен из ресурса памяти x, равного *m_ресурсу, с использованием<x.allocate(n * sizeof(T), alignof(T))>.

    Эффекты: Эквивалент m_resource->deallocate(p, n* sizeof(T), alignof(T)).

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

  3. <
    template<typenameU,class...Args>voidconstruct(U*p,Args&&...args);
    >

    Требуется: Использование распределительной конструкции Т с распределительной<this->resource()>и конструкторской аргументацией<std::forward<Args>(args)...>хорошо сформировано. [Примечание: конструкции распределительных устройств всегда хорошо сформированы для типов, которые не используют распределительные устройства. - конечное примечание]

    Эффекты: Постройте T-объект при p по конструкции аллокатора с помощью аргументов распределителя<this->resource()>и конструктора<std::forward<Args>(args)...>.

    Бросает: Ничего, кроме конструктора для Т-бросков.

  4. <
    template<typenameU>voiddestroy(U*p);
    >

    Эффекты: p->~U().

  5. <
    polymorphic_allocatorselect_on_container_copy_construction()const;
    >

    Возвращение: эквивалентно<polymorphic_allocator()>

    .
  6. <
    memory_resource*resource()const;
    >

    Возвращение: m_resource.


PrevUpHomeNext

Статья Class template polymorphic_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:37:07/0.0087599754333496/1