std::deque<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 .
Все итераторы (включая
end()
итератор) инвалидируются. Ссылки также инвалидируются, за исключением случаев, когда
pos
==
begin()
или
pos
==
end()
, в этом случае они не инвалидируются.
Каждый итератор в диапазоне rg разыменовывается ровно один раз.
Если rg пересекается с * this , поведение не определено.
Содержание |
Параметры
| pos | - |
итератор, перед которым будет вставлено содержимое (
pos
может быть итератором
end()
)
|
| rg | - |
совместимый с контейнером диапазон
container compatible range
, то есть
input_range
, элементы которого конвертируются в
T
|
| Требования к типам | ||
-
|
||
Возвращаемое значение
Итератор на первый элемент, вставленный в * this , или pos , если rg пуст.
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-aware конструирование и вставка |
Пример
#include <algorithm> #include <cassert> #include <iterator> #include <deque> #include <list> int main() { auto container = std::deque{1, 2, 3, 4}; auto pos = std::next(container.begin(), 2); assert(*pos == 3); const auto rg = std::list{-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::deque{1, 2, -1, -2, -3, 3, 4})); }
Смотрите также
|
вставляет элементы
(публичная функция-член) |
|
|
(C++23)
|
добавляет диапазон элементов в начало
(публичная функция-член) |
|
(C++23)
|
добавляет диапазон элементов в конец
(публичная функция-член) |