Namespaces
Variants

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

De fr.cppreference.net
 
 
 
 
template< container-compatible-range<T> R >
constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg );
(depuis C++26)
(supprimé en 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 que 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.

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

Test de fonctionnalité macro Valeur Norme Fonctionnalité
__cpp_lib_inplace_vector 202603L (C++26) Supprimé try_append_range

Exemple

#include <cassert>
#include <initializer_list>
#include <inplace_vector>

int main()
{
#if defined(__cpp_lib_inplace_vector) and (__cpp_lib_inplace_vector < 202603L)
    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);
#endif
}

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)