std::allocator_traits<Alloc>:: allocate_at_least
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
static
constexpr
std::
allocation_result
<
pointer, size_type
>
allocate_at_least ( Alloc & a, size_type n ) ; |
(seit C++23) | |
allocate_at_least
ruft
a.
allocate_at_least
(
n
)
auf und gibt dessen Ergebnis zurück, falls der Aufruf wohlgeformt ist; andernfalls entspricht es
return
{
a.
allocate
(
n
)
, n
}
;
.
allocator_at_least
versucht, Speicher für mindestens
n
value_type
Objekte zu allozieren und bietet einen Fallback-Mechanismus, der Speicher für exakt
n
Objekte alloziert.
Inhaltsverzeichnis |
Parameter
| a | - | ein Allokator, der für die Zuweisung von Speicher verwendet wird |
| n | - | die Untergrenze der Anzahl von Objekten, für die Speicher zugewiesen werden soll |
Rückgabewert
a. allocate_at_least ( n ) falls es wohlgeformt ist.
Andernfalls, std:: allocation_result < pointer, size_type > { a. allocate ( n ) , n } .
Exceptions
Wirft was und wann die ausgewählte Allokationsfunktion wirft.
Hinweise
Die
allocate_at_least
Memberfunktion von
Allocator
Typen wird hauptsächlich für kontinuierliche Container bereitgestellt, z.B.
std::vector
und
std::basic_string
, um Neuzuordnungen zu reduzieren, indem ihre Kapazität wenn möglich der tatsächlich zugewiesenen Größe angepasst wird. Da
allocate_at_least
einen Fallback-Mechanismus bereitstellt, kann es direkt an geeigneten Stellen verwendet werden.
Gegeben ein Allokator-Objekt
a
vom Typ
Alloc
, sei
result
der von
std::
allocator_traits
<
Alloc
>
::
allocate_at_least
(
a, n
)
zurückgegebene Wert. Der Speicher sollte durch
a.
deallocate
(
result.
ptr
, m
)
freigegeben werden (typischerweise aufgerufen via
std::
allocator_traits
<
Alloc
>
::
deallocate
(
a, result.
ptr
, m
)
), um Speicherlecks zu vermeiden.
Das Argument
m
, das bei der Freigabe verwendet wird, darf nicht kleiner sein als
n
und nicht größer als
result.
count
, andernfalls ist das Verhalten undefiniert. Beachten Sie, dass
n
immer gleich
result.
count
ist, wenn der Allokator kein
allocate_at_least
bereitstellt, was bedeutet, dass
m
gleich
n
sein muss.
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_allocate_at_least
|
202302L
|
(C++23) |
allocate_at_least
etc.
|
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
(C++23)
|
weist nicht initialisierten Speicher zu, der mindestens so groß wie die angeforderte Größe ist
(öffentliche Elementfunktion von
std::allocator<T>
)
|