Namespaces
Variants

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

From cppreference.net
template < class ... Args >
constexpr pointer try_emplace_back ( Args && ... args ) ;
(depuis C++26)

Ajoute conditionnellement un objet de type T à la fin du conteneur.

Si size ( ) == capacity ( ) est true , il n'y a aucun effet. Sinon, ajoute un objet de type T initialisé par initialisation directe non-liste avec std:: forward < Args > ( args ) ... .

Aucun itérateur ou référence n'est invalidé, à l'exception de end() , qui est invalidé si l'insertion se produit.

Table des matières

Paramètres

args - arguments à transmettre au constructeur de l'élément
Exigences de type
-
T doit être EmplaceConstructible dans inplace_vector à partir de std:: forward < Args > ( args ) ... .

Valeur de retour

std:: addressof ( back ( ) ) si size ( ) < capacity ( ) , nullptr sinon.

Complexité

Constante.

Exceptions

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, cette fonction n'a aucun effet ( garantie forte de sûreté face aux exceptions ).

Notes

Exemple

#include <cassert>
#include <complex>
#include <inplace_vector>
int main()
{
    using namespace std::complex_literals;
    using C = std::complex<double>;
    using I = std::inplace_vector<C, 3>;
    auto v = I{1.0 + 2.0i, 3.0 + 4.0i};
    C* c = v.try_emplace_back(5.0, 6.0);
    assert(*c == 5.0 + 6.0i);
    assert((v == I{1.0 + 2.0i, 3.0 + 4.0i, 5.0 + 6.0i}));
    c = v.try_emplace_back(7.0, 8.0); // pas d'espace => pas d'insertion
    assert(c == nullptr);
    assert((v == I{1.0 + 2.0i, 3.0 + 4.0i, 5.0 + 6.0i}));
}

Voir aussi

construit un élément en place à la fin
(fonction membre publique)
ajoute un élément à la fin
(fonction membre publique)
ajoute une plage d'éléments à la fin
(fonction membre publique)
tente d'ajouter une plage d'éléments à la fin
(fonction membre publique)
construit inconditionnellement un élément en place à la fin
(fonction membre publique)
ajoute inconditionnellement un élément à 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)