Delen via


scoped_allocator_adaptor-klasse

Vertegenwoordigt een nest van allocators.

Syntaxis

template <class Outer, class... Inner>
class scoped_allocator_adaptor;

Opmerkingen

De klassesjabloon bevat een nest van een of meer toewijzingen. Elke klasse heeft een buitenste allocator van het type outer_allocator_type, een synoniem voor Outer, een openbare basis van het scoped_allocator_adaptor object. Outer wordt gebruikt om geheugen toe te wijzen voor gebruik door een container. U kunt een verwijzing naar dit allocator-basisobject verkrijgen door aan te roepen outer_allocator.

De rest van het nest heeft type inner_allocator_type. Een binnenste allocator wordt gebruikt om geheugen toe te wijzen voor elementen in een container. U kunt een verwijzing verkrijgen naar het opgeslagen object van dit type door aan te roepen inner_allocator. Als Inner... dit niet leeg is, inner_allocator_type heeft u het type scoped_allocator_adaptor<Inner...>en inner_allocator wijst u een lidobject aan. inner_allocator_type Anders heeft u het type scoped_allocator_adaptor<Outer>en inner_allocator wijst u het hele object aan.

Het nest gedraagt zich alsof het willekeurige diepte heeft, waardoor de binnenste ingekapselde allocator indien nodig wordt gerepliceerd.

Verschillende concepten die geen deel uitmaken van de zichtbare interfacehulp bij het beschrijven van het gedrag van deze klassesjabloon. Een buitenste allocator mediaeert alle aanroepen naar de constructie en vernietig methoden. Het wordt effectief gedefinieerd door de recursieve functie OUTERMOST(X), waar OUTERMOST(X) een van de volgende is.

  • Als X.outer_allocator() het goed is gevormd, OUTERMOST(X) dan is OUTERMOST(X.outer_allocator())het .

  • Anders wordt OUTERMOST(X)X.

Er worden drie typen gedefinieerd in het belang van de tentoonstelling:

Typologie Beschrijving
Outermost Het type OUTERMOST(*this).
Outermost_traits allocator_traits<Outermost>
Outer_traits allocator_traits<Outer>

Constructeurs

Naam Beschrijving
scoped_allocator_adaptor Maakt een scoped_allocator_adaptor-object.

Typedefs

Naam Beschrijving
const_pointer Dit type is een synoniem voor de const_pointer synoniemen die aan de allocator Outerzijn gekoppeld.
const_void_pointer Dit type is een synoniem voor de const_void_pointer synoniemen die aan de allocator Outerzijn gekoppeld.
difference_type Dit type is een synoniem voor de difference_type synoniemen die aan de allocator Outerzijn gekoppeld.
inner_allocator_type Dit type is een synoniem voor het type geneste adapter scoped_allocator_adaptor<Inner...>.
outer_allocator_type Dit type is een synoniem voor het type basistoewijzing Outer.
pointer Dit type is een synoniem voor de pointer gekoppelde aan de allocator Outer.
propagate_on_container_copy_assignment Het type geldt alleen als Outer_traits::propagate_on_container_copy_assignment het waar is of inner_allocator_type::propagate_on_container_copy_assignment waar is.
propagate_on_container_move_assignment Het type geldt alleen als Outer_traits::propagate_on_container_move_assignment het waar is of inner_allocator_type::propagate_on_container_move_assignment waar is.
propagate_on_container_swap Het type geldt alleen als Outer_traits::propagate_on_container_swap het waar is of inner_allocator_type::propagate_on_container_swap waar is.
size_type Dit type is een synoniem voor de size_type gekoppelde aan de allocator Outer.
value_type Dit type is een synoniem voor de value_type gekoppelde aan de allocator Outer.
void_pointer Dit type is een synoniem voor de void_pointer gekoppelde aan de allocator Outer.

Structuren

Naam Beschrijving
scoped_allocator_adaptor::rebind Struct Definieert het type Outer::rebind<Other>::other als synoniem voor scoped_allocator_adaptor<Other, Inner...>.

Methoden

Naam Beschrijving
toewijzen Hiermee wijst u geheugen toe met behulp van de Outer allocator.
bouwen Maakt een object.
toewijzing ongedaan maken Hiermee wordt de toewijzing van objecten ongedaan gemaakt met behulp van de buitenste allocator.
vernietigen Vernietigt een opgegeven object.
inner_allocator Hiermee wordt een verwijzing naar het opgeslagen object van het type inner_allocator_typeopgehaald.
max_size Bepaalt het maximum aantal objecten dat kan worden toegewezen door de buitenste allocator.
outer_allocator Hiermee wordt een verwijzing naar het opgeslagen object van het type outer_allocator_typeopgehaald.
select_on_container_copy_construction Hiermee maakt u een nieuw scoped_allocator_adaptor object met elk opgeslagen allocatorobject geïnitialiseerd door aan te roepen select_on_container_copy_construction voor elke bijbehorende allocator.

Bedieners

Operateur Beschrijving
operator =
operator==
operator!=

Behoeften

Rubriek:<scoped_allocator>

naamruimte: std

scoped_allocator_adaptor::toewijzen

Hiermee wijst u geheugen toe met behulp van de Outer allocator.

pointer allocate(size_type count);pointer allocate(size_type count, const_void_pointer hint);

Parameterwaarden

aantal
Het aantal elementen waarvoor voldoende opslagruimte moet worden toegewezen.

tip
Een aanwijzer die het allocator-object kan helpen door het adres te zoeken van een object dat vóór de aanvraag is toegewezen.

Retourwaarde

De eerste lidfunctie retourneert Outer_traits::allocate(outer_allocator(), count). De functie tweede lid retourneert Outer_traits::allocate(outer_allocator(), count, hint).

scoped_allocator_adaptor::construct

Maakt een object.

template <class Ty, class... Atypes>
void construct(Ty* ptr, Atypes&&... args);

template <class Ty1, class Ty2, class... Atypes1, class... Atypes2>
void construct(pair<Ty1, Ty2>* ptr, piecewise_construct_t,
    tuple<Atypes1&&...>
first, tuple<Atypes1&&...> second);

template <class Ty1, class Ty2>
void construct(pair<Ty1, Ty2>* ptr);

template <class Ty1, class Ty2, class Uy1, class Uy2>
void construct(pair<Ty1, Ty2>* ptr,
    class Uy1&& first, class Uy2&& second);

template <class Ty1, class Ty2, class Uy1, class Uy2>
void construct(pair<Ty1, Ty2>* ptr, const pair<Uy1, Uy2>& right);

template <class Ty1, class Ty2, class Uy1, class Uy2>
void construct(pair<Ty1, Ty2>* ptr, pair<Uy1, Uy2>&& right);

Parameterwaarden

ptr
Een aanwijzer naar de geheugenlocatie waar het object moet worden samengesteld.

args
Een lijst met argumenten.

eerste
Een object van het eerste type in een paar.

tweede
Een object van het tweede type in een paar.

rechts
Een bestaand object dat moet worden verplaatst of gekopieerd.

Opmerkingen

De eerste methode bouwt het object op ptr door aan te roepen Outermost_traits::construct(OUTERMOST(*this), ptr, xargs...), waarbij xargs... een van de volgende is.

  • Als uses_allocator<Ty, inner_allocator_type> het onwaar is, is xargs...dat args... .

  • Als uses_allocator<Ty, inner_allocator_type> het waar is en is_constructible<Ty, allocator_arg_t, inner_allocator_type, args...> waar is, is xargs...dat allocator_arg, inner_allocator(), args... .

  • Als uses_allocator<Ty, inner_allocator_type> het waar is en is_constructible<Ty, args..., inner_allocator()> waar is, is xargs...dat args..., inner_allocator() .

Met de tweede methode wordt het paarobject bij ptr samengesteld door aan te roepen Outermost_traits::construct(OUTERMOST(*this), &ptr->first, xargs...), waar xargs... wordt first... gewijzigd zoals in de bovenstaande lijst en Outermost_traits::construct(OUTERMOST(*this), &ptr->second, xargs...)waar xargs... wordt second... gewijzigd zoals in de bovenstaande lijst.

De derde methode gedraagt zich hetzelfde als this->construct(ptr, piecewise_construct, tuple<>, tuple<>).

De vierde methode gedraagt zich hetzelfde als this->construct(ptr, piecewise_construct, forward_as_tuple(std::forward<Uy1>(first), forward_as_tuple(std::forward<Uy2>(second)).

De vijfde methode gedraagt zich hetzelfde als this->construct(ptr, piecewise_construct, forward_as_tuple(right.first), forward_as_tuple(right.second)).

De zesde methode gedraagt zich hetzelfde als this->construct(ptr, piecewise_construct, forward_as_tuple(std::forward<Uy1>(right.first), forward_as_tuple(std::forward<Uy2>(right.second)).

scoped_allocator_adaptor::d eallocate

Hiermee wordt de toewijzing van objecten ongedaan gemaakt met behulp van de buitenste allocator.

void deallocate(pointer ptr, size_type count);

Parameterwaarden

ptr
Een aanwijzer naar de beginlocatie van de objecten waarvan de toewijzing ongedaan moet worden gemaakt.

aantal
Het aantal objecten dat de toewijzing ongedaan moet maken.

scoped_allocator_adaptor::d estroy

Vernietigt een opgegeven object.

template <class Ty>
void destroy(Ty* ptr)

Parameterwaarden

ptr
Een aanwijzer naar het object dat moet worden vernietigd.

Retourwaarde

Outermost_traits::destroy(OUTERMOST(*this), ptr)

scoped_allocator_adaptor::inner_allocator

Hiermee wordt een verwijzing naar het opgeslagen object van het type inner_allocator_typeopgehaald.

inner_allocator_type& inner_allocator() noexcept;
const inner_allocator_type& inner_allocator() const noexcept;

Retourwaarde

Een verwijzing naar het opgeslagen object van het type inner_allocator_type.

scoped_allocator_adaptor::max_size

Bepaalt het maximum aantal objecten dat kan worden toegewezen door de buitenste allocator.

size_type max_size();

Retourwaarde

Outer_traits::max_size(outer_allocator())

scoped_allocator_adaptor::operator=

scoped_allocator_adaptor& operator=(const scoped_allocator_adaptor&) = default;
scoped_allocator_adaptor& operator=(scoped_allocator_adaptor&&) = default;

scoped_allocator_adaptor::operator==

template <class OuterA1, class OuterA2, class... InnerAllocs>
bool operator==(const scoped_allocator_adaptor<OuterA1, InnerAllocs...>& a,
const scoped_allocator_adaptor<OuterA2, InnerAllocs...>& b) noexcept;

scoped_allocator_adaptor::operator!=

template <class OuterA1, class OuterA2, class... InnerAllocs>
bool operator!=(const scoped_allocator_adaptor<OuterA1, InnerAllocs...>& a,
const scoped_allocator_adaptor<OuterA2, InnerAllocs...>& b) noexcept;

scoped_allocator_adaptor::outer_allocator

Hiermee wordt een verwijzing naar het opgeslagen object van het type outer_allocator_typeopgehaald.

outer_allocator_type& outer_allocator() noexcept;
const outer_allocator_type& outer_allocator() const noexcept;

Retourwaarde

Een verwijzing naar het opgeslagen object van het type outer_allocator_type.

scoped_allocator_adaptor::rebind Struct

Definieert het type Outer::rebind<Other>::other als synoniem voor scoped_allocator_adaptor<Other, Inner...>.

struct rebind{ typedef Other_traits::rebind<Other> Other_alloc; typedef scoped_allocator_adaptor<Other_alloc, Inner...> other; };

scoped_allocator_adaptor::scoped_allocator_adaptor Constructor

Maakt een scoped_allocator_adaptor-object. Bevat ook een destructor.

scoped_allocator_adaptor();

scoped_allocator_adaptor(const scoped_allocator_adaptor& right) noexcept;
template <class Outer2>
scoped_allocator_adaptor(
const scoped_allocator_adaptor<Outer2, Inner...>& right) noexcept;
template <class Outer2>
scoped_allocator_adaptor(
scoped_allocator_adaptor<Outer2, Inner...>&& right) noexcept;
template <class Outer2>
scoped_allocator_adaptor(Outer2&& al,
    const Inner&... rest) noexcept;

~scoped_allocator_adaptor();

Parameterwaarden

rechts
Een bestaande scoped_allocator_adaptor.

al
Een bestaande allocator die moet worden gebruikt als de buitenste allocator.

rust
Een lijst met allocators die moeten worden gebruikt als de inner allocators.

Opmerkingen

Met de eerste constructor worden de opgeslagen allocatorobjecten samengesteld. Elk van de volgende drie constructors bouwt de opgeslagen allocatorobjecten van de bijbehorende objecten rechts. Met de laatste constructor worden de opgeslagen allocatorobjecten samengesteld op basis van de bijbehorende argumenten in de lijst met argumenten.

scoped_allocator_adaptor::select_on_container_copy_construction

Hiermee maakt u een nieuw scoped_allocator_adaptor object met elk opgeslagen allocatorobject geïnitialiseerd door aan te roepen select_on_container_copy_construction voor elke bijbehorende allocator.

scoped_allocator_adaptor select_on_container_copy_construction();

Retourwaarde

Deze methode retourneert scoped_allocator_adaptor(Outer_traits::select_on_container_copy_construction(*this), inner_allocator().select_on_container_copy_construction())effectief . Het resultaat is een nieuw scoped_allocator_adaptor object met elk opgeslagen allocatorobject geïnitialiseerd door aan te roepen al.select_on_container_copy_construction() voor de bijbehorende allocator al.

Zie ook

headerbestanden