std::basic_string<CharT,Traits,Allocator>::insert_range - cppreference.com (original) (raw)

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

Equivalent to

If pos is not a valid iterator on *this, the behavior is undefined.

Contents

[edit] Parameters

[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 macro Value Std Feature
__cpp_lib_containers_ranges 202202L (C++23) member functions that accept container compatible range

[edit] Example

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

[edit] See also