Namespaces
Variants

std::inplace_vector<T,N>:: resize

From cppreference.net

constexpr void resize ( size_type count ) ;
(1) (depuis C++26)
constexpr void resize ( size_type count, const value_type & value ) ;
(2) (depuis C++26)

Redimensionne le conteneur pour contenir count éléments :

  • Si count est égal à la taille actuelle, ne fait rien.
  • Si la taille actuelle est supérieure à count , le conteneur est réduit à ses premiers count éléments.
  • Si la taille actuelle est inférieure à count , alors :
1) Des éléments supplémentaires default-inserted sont ajoutés.
2) Des copies supplémentaires de value sont ajoutées.

Table des matières

Paramètres

count - nouvelle taille du conteneur
value - la valeur pour initialiser les nouveaux éléments
Exigences de type
-
Si la condition suivante est satisfaite, le comportement est indéfini :
1) T n'est pas DefaultInsertable dans inplace_vector .
2) T n'est pas CopyInsertable dans inplace_vector .

Complexité

Linéaire dans la différence entre la taille actuelle et count .

Exceptions

1,2) Lance std::bad_alloc si count > N .

Si une exception est levée pour quelque raison que ce soit, ces fonctions n'ont aucun effet ( strong exception safety guarantee ).

Exemple

#include <inplace_vector>
#include <print>
int main()
{
    std::inplace_vector<int, 6> v(6, 9);
    std::println("Initialement, v = {}", v);
    v.resize(2);
    std::println("Après resize(2), v = {}", v);
    v.resize(4);
    std::println("Après resize(4), v = {}", v);
    v.resize(6, -1);
    std::println("Après resize(6, -1), v = {}", v);
    try
    {
        std::print("Tentative de resize(13) : ");
        v.resize(13); // lève une exception car count > N ; v reste inchangé
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("ex.what() : {}", ex.what());
    }
    std::println("Après l'exception, v = {}", v);
}

Sortie possible :

Initialement, v = [9, 9, 9, 9, 9, 9]
Après resize(2), v = [9, 9]
Après resize(4), v = [9, 9, 0, 0]
Après resize(6, -1), v = [9, 9, 0, 0, -1, -1]
Tentative de resize(13) : ex.what() : std::bad_alloc
Après l'exception, v = [9, 9, 0, 0, -1, -1]


Voir aussi

[static]
retourne le nombre maximum possible d'éléments
(fonction membre publique statique)
retourne le nombre d'éléments
(fonction membre publique)
[static]
retourne le nombre d'éléments pouvant être contenus dans le stockage actuellement alloué
(fonction membre publique statique)
vérifie si le conteneur est vide
(fonction membre publique)