Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 isOUTERMOST(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, isxargs...datargs....Als
uses_allocator<Ty, inner_allocator_type>het waar is enis_constructible<Ty, allocator_arg_t, inner_allocator_type, args...>waar is, isxargs...datallocator_arg, inner_allocator(), args....Als
uses_allocator<Ty, inner_allocator_type>het waar is enis_constructible<Ty, args..., inner_allocator()>waar is, isxargs...datargs..., 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.