Namespaces
Variants

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

De fr.cppreference.net
 
 
 
 
constexpr reference push_back( const T& value );
(1) (depuis C++26)
constexpr reference push_back( T&& value );
(2) (depuis C++26)

Ajoute l'élément donné value à la fin du conteneur.

1) Le nouvel élément est initialisé comme une copie de value.
2) value est déplacé dans le nouvel élément.

Aucun itérateur ou référence n'est invalidé, sauf end(), qui est invalidé si l'insertion a lieu.

Paramètres

value - la valeur de l'élément à ajouter
Exigences de type
-
T doit satisfaire aux exigences de CopyInsertable pour utiliser la surcharge (1).
-
T doit satisfaire aux exigences de MoveInsertable pour utiliser la surcharge (2).

Valeur de retour

back() , c'est-à-dire une référence à l'élément inséré.

Complexité

Constante.

Exceptions

  • std::bad_alloc si size ( ) == capacity ( ) avant l'invocation.
  • Toute exception levée par l'initialisation de l'élément inséré.

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 <new>
#include <print>
#include <string>
int main()
{
    std::inplace_vector<std::string, 2> fauna;
    std::string dog{"\N{DOG}"};
    fauna.push_back("\N{CAT}"); // surcharge (1)
    fauna.push_back(std::move(dog)); // surcharge (2)
    std::println("fauna = {}", fauna);
    try
    {
        fauna.push_back("\N{BUG}"); // lève une exception : il n'y a plus d'espace
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("{}", ex.what());
    }
    std::println("fauna = {}", fauna);
}

Sortie possible :

fauna = ["🐈", "🐕"]
std::bad_alloc
fauna = ["🐈", "🐕"]

Voir aussi

construit un élément en place à la fin
(fonction membre publique)
ajoute une plage d'éléments à la fin
(fonction membre publique)
tente d'ajouter un élément à la fin
(fonction membre publique)
tente de construire un élément en place à la fin
(fonction membre publique)
tente d'ajouter une plage d'éléments à la fin
(fonction membre publique)
ajoute inconditionnellement un élément à la fin
(fonction membre publique)
construit inconditionnellement un élément en place à la fin
(fonction membre publique)
supprime le dernier élément
(fonction membre publique)
crée un std::back_insert_iterator du type déduit de l'argument
(fonction template)