std::basic_string<CharT,Traits,Allocator>::insert_range - cppreference.com

From cppreference.com

template<container-compatible-range<CharT>R>constexpriteratorinsert_range(const_iteratorpos,R&&rg);(since C++23)Inserts characters from the range rg before the element (if any) pointed by pos.

Equivalent to

returninsert(pos-begin(),std::basic_string(std::from_range,std​::​forward<R>(rg),get_allocator()));If pos is not a valid iterator on *this, the behavior is undefined.

Parameters

Return value

An iterator which refers to the first inserted character, or pos if no characters were inserted because rg was empty.

Complexity

Linear in size of rg.

Exceptions

If std::allocator_traits<Allocator>::allocate throws an exception, it is rethrown.

If the operation would cause

size()

to exceed

max_size()

, throws

std::length_error

.

If an exception is thrown for any reason, this function has no effect (

strong exception safety guarantee

).

Notes

Feature-test

macroValueStdFeature

__cpp_lib_containers_ranges

202202L

(C++23)member functions that accept

container compatible range

Example

Run this code

#include<cassert>#include<iterator>#include<string>intmain(){constautosource={'l','i','b','_'};std::stringtarget{"__cpp_containers_ranges"};// ^insertion will occur// before this positionconstautopos=target.find("container");assert(pos!=target.npos);autoiter=std::next(target.begin(),pos);#ifdef __cpp_lib_containers_rangestarget.insert_range(iter,source);#elsetarget.insert(iter,source.begin(),source.end());#endifassert(target=="__cpp_lib_containers_ranges");// ^^^^}See also