Пространства имён
Варианты
Действия

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

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-элементы
Доступ к элементам
Итераторы
Ёмкость
Операции
basic_string::insert_range
(C++23)
Поиск
Константы
Правила вывода(C++17)
Функции, не являющиеся элементами
Ввод/Вывод
Сравнение
(до C++20)(до C++20)(до C++20)(до C++20)(до C++20)(C++20)
Числовые преобразования
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Вспомогательные классы
 
template<container-compatible-range<CharT> R >
constexpr iterator insert_range( const_iterator pos, R&& rg );
(начиная с C++23)

Вставляет символы из диапазона rg перед элементом (если есть), на который указывает pos.

Эквивалентно

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

Если pos не является допустимым итератором для *this, поведение не определено.

Содержание

[править]Параметры

pos итератор, перед которым будут вставлены символы
rg no section name

[править]Возвращаемое значение

Итератор, который ссылается на первый вставленный символ или pos, если символы не были вставлены, поскольку rg был пустым.

[править]Сложность

Линейная по размеру rg.

[править]Исключения

Если std::allocator_traits<Allocator>::allocate генерирует исключение, оно генерируется повторно.

Если операция приведёт к size()> max_size(), генерирует std::length_error.

Если по какой-либо причине генерируется исключение, эта функция не имеет эффекта (строгая гарантия безопасности исключений).

[править]Примечание

Макрос Тестирования функциональностиЗначениеСтандартФункциональность
__cpp_lib_containers_ranges202202L(C++23)функции-элементы, которые принимают no section name

[править]Пример

#include <cassert>#include <iterator>#include <string>   int main(){constauto source ={'l', 'i', 'b', '_'};std::string target{"__cpp_containers_ranges"};// ^вставка произойдёт// перед этой позицией   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");// ^^^^}

[править]Смотрите также

вставляет символы
(public функция-элемент)[править]
close