Namespaces
Variants

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

From cppreference.net
template < container-compatible-range < T > R >
constexpr std :: ranges:: borrowed_iterator_t < R > try_append_range ( R && rg ) ;
(depuis C++26)

Ajoute des copies des éléments initiaux dans rg avant end() , jusqu'à ce que tous les éléments soient insérés ou que le stockage interne soit épuisé (c'est-à-dire lorsque size ( ) == capacity ( ) est true ).

Tous les itérateurs et références restent valides. L'itérateur end() est invalidé.

Chaque itérateur dans rg est déréférencé au plus une fois.

Table des matières

Paramètres

rg - une plage compatible avec les conteneurs , c'est-à-dire une input_range dont les éléments sont convertibles en T
Exigences de type
-
T doit être EmplaceConstructible dans inplace_vector à partir de * ranges:: begin ( rg ) . Sinon, le comportement est indéfini.

Valeur de retour

Un itérateur pointant vers le premier élément de rg qui n'a pas été inséré dans * this , ou ranges:: end ( rg ) si aucun tel élément n'existe.

Complexité

Linéaire dans le nombre d'éléments insérés.

Exceptions

Toute exception levée par l'initialisation de l'élément inséré.

inplace_vector fournit la garantie de sécurité d'exception de base , c'est-à-dire que tous les éléments du conteneur avant l'appel sont préservés, et tous les éléments déjà insérés (avant l'exception, le cas échéant) sont également préservés.

Notes

Exemple

#include <cassert>
#include <initializer_list>
#include <inplace_vector>
int main()
{
    using I = std::inplace_vector<int, 8>;
    auto nums = I{1, 2, 3};
    const auto rg = {-1, -2, -3};
    auto it = nums.try_append_range(rg);
    assert(nums.size() == 6);
    assert((nums == I{1, 2, 3, -1, -2, -3}));
    assert(it == rg.end());
    it = nums.try_append_range(rg);
    assert(nums.size() == 8);
    assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2}));
    assert(it == rg.begin() + 2);
}

Voir aussi

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