Namespaces
Variants
Actions

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

From cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
template<container-compatible-range<CharT> R >
constexpr iterator insert_range( const_iterator pos, R&& rg );
(since C++23)

Inserts characters from the range rg before the element (if any) pointed by pos.

Equivalent to

return insert(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.

Contents

[edit]Parameters

pos - iterator before which the characters will be inserted
rg - a container compatible range

[edit]Return value

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

[edit]Complexity

Linear in size of rg.

[edit]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).

[edit]Notes

Feature-test macroValueStdFeature
__cpp_lib_containers_ranges202202L(C++23)member functions that accept container compatible range

[edit]Example

#include <cassert>#include <iterator>#include <string>   int main(){constauto source ={'l', 'i', 'b', '_'};std::string target{"__cpp_containers_ranges"};// ^insertion will occur// before this position   constauto 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");// ^^^^}

[edit]See also

inserts characters
(public member function)[edit]
close