Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>:: insert_range

From cppreference.net
std::basic_string
template < container-compatible-range < CharT > R >
constexpr iterator insert_range ( const_iterator pos, R && rg ) ;
(depuis C++23)

Insère les caractères de la plage rg avant l'élément (s'il existe) pointé par pos .

Équivalent à

return insert(pos - begin(),
    std::basic_string(
        std::from_range,
        std​::​forward<R>(rg),
        get_allocator())
);

Si pos n'est pas un itérateur valide sur * this , le comportement est indéfini.

Table des matières

Paramètres

pos - itérateur avant lequel les caractères seront insérés
rg - une container compatible range

Valeur de retour

Un itérateur qui fait référence au premier caractère inséré, ou pos si aucun caractère n'a été inséré car rg était vide.

Complexité

Linéaire en taille de rg .

Exceptions

Si std:: allocator_traits < Allocator > :: allocate lève une exception, celle-ci est relancée.

Si l'opération devait entraîner le dépassement de size() au-delà de max_size() , lève std::length_error .

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

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_containers_ranges 202202L (C++23) Fonctions membres qui acceptent une plage compatible avec le conteneur

Exemple

#include <cassert>
#include <iterator>
#include <string>
int main()
{
    const auto source = {'l', 'i', 'b', '_'};
    std::string target{"__cpp_containers_ranges"};
    //                        ^l'insertion se produira
    //                         avant cette position
    const auto pos = target.find("container");
    assert(pos != target.npos);
    auto iter = std::next(target.begin(), pos);
#ifdef __cpp_lib_containers_ranges
    target.insert_range(iter, source);
#else
    target.insert(iter, source.begin(), source.end());
#endif
    assert(target == "__cpp_lib_containers_ranges");
    //                      ^^^^
}

Voir aussi

insère des caractères
(fonction membre publique)