std::allocator_traits<Alloc>:: allocate_at_least
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
static
constexpr
std::
allocation_result
<
pointer, size_type
>
allocate_at_least ( Alloc & a, size_type n ) ; |
(depuis C++23) | |
allocate_at_least
appelle
a.
allocate_at_least
(
n
)
et retourne son résultat si l'appel est bien formé, sinon, c'est équivalent à
return
{
a.
allocate
(
n
)
, n
}
;
.
allocator_at_least
tente d'allouer un espace de stockage pour au moins
n
value_type
objets, et fournit un mécanisme de repli qui alloue un espace de stockage pour exactement
n
objets.
Table des matières |
Paramètres
| a | - | un allocateur utilisé pour allouer de la mémoire |
| n | - | la limite inférieure du nombre d'objets pour lesquels allouer de la mémoire |
Valeur de retour
a. allocate_at_least ( n ) si elle est bien formée.
Sinon, std:: allocation_result < pointer, size_type > { a. allocate ( n ) , n } .
Exceptions
Lance quoi et quand la fonction d'allocation sélectionnée lance.
Notes
La fonction membre
allocate_at_least
des types
Allocator
est principalement fournie pour les conteneurs contigus, tels que
std::vector
et
std::basic_string
, afin de réduire les réallocations en faisant correspondre leur capacité à la taille réellement allouée lorsque cela est possible. Comme
allocate_at_least
fournit un mécanisme de repli, elle peut être utilisée directement là où cela est approprié.
Étant donné un objet allocateur
a
de type
Alloc
, soit
result
la valeur retournée par
std::
allocator_traits
<
Alloc
>
::
allocate_at_least
(
a, n
)
, la mémoire doit être désallouée par
a.
deallocate
(
result.
ptr
, m
)
(généralement appelé via
std::
allocator_traits
<
Alloc
>
::
deallocate
(
a, result.
ptr
, m
)
) afin d'éviter une fuite de mémoire.
L'argument
m
utilisé dans la désallocation doit être non inférieur à
n
et non supérieur à
result.
count
, sinon le comportement est indéfini. Notez que
n
est toujours égal à
result.
count
si l'allocateur ne fournit pas
allocate_at_least
, ce qui signifie que
m
doit être égal à
n
.
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_allocate_at_least
|
202302L
|
(C++23) |
allocate_at_least
etc.
|
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++23)
|
alloue un stockage non initialisé d'au moins la taille demandée
(fonction membre publique de
std::allocator<T>
)
|