std::list<T,Allocator>:: insert_range
|
template
<
container-compatible-range
<
T
>
R
>
iterator insert_range ( const_iterator pos, R && rg ) ; |
(начиная с C++23)
(constexpr начиная с C++26) |
|
Вставляет, в неперевёрнутом порядке, копии элементов из rg перед pos .
Никакие итераторы или ссылки не инвалидируются.
Каждый итератор в диапазоне rg разыменовывается ровно один раз.
Если rg пересекается с * this , поведение не определено.
Содержание |
Параметры
| pos | - |
итератор, перед которым будет вставлено содержимое (
pos
может быть итератором
end()
)
|
| rg | - |
container compatible range
, то есть
input_range
, элементы которого конвертируются в
T
|
| Требования к типам | ||
-
T
не является
EmplaceConstructible
в
list
из
*
ranges::
begin
(
rg
)
, поведение не определено.
|
||
Возвращаемое значение
Итератор на первый элемент, вставленный в * this , или pos , если rg пуст.
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-aware конструирование и вставка |
Пример
#include <algorithm> #include <cassert> #include <iterator> #include <list> #include <vector> int main() { auto container = std::list{1, 2, 3, 4}; auto pos = std::next(container.begin(), 2); assert(*pos == 3); const auto rg = std::vector{-1, -2, -3}; #ifdef __cpp_lib_containers_ranges container.insert_range(pos, rg); #else container.insert(pos, rg.cbegin(), rg.cend()); #endif assert(std::ranges::equal(container, std::list{1, 2, -1, -2, -3, 3, 4})); }
Смотрите также
|
вставляет элементы
(публичная функция-член) |
|
|
(C++23)
|
добавляет диапазон элементов в начало
(публичная функция-член) |
|
(C++23)
|
добавляет диапазон элементов в конец
(публичная функция-член) |