std::list<T,Allocator>:: append_range
|
template
<
container-compatible-range
<
T
>
R
>
void append_range ( R && rg ) ; |
(начиная с C++23)
(constexpr начиная с C++26) |
|
Вставляет копии элементов из диапазона
rg
перед
end()
в прямом порядке.
Никакие итераторы или ссылки не инвалидируются.
Каждый итератор в rg разыменовывается ровно один раз.
Содержание |
Параметры
| rg | - |
a
container compatible range
, that is, an
input_range
whose elements are convertible to
T
|
| Требования к типу | ||
-
T
не является
EmplaceConstructible
в
list
из
*
ranges::
begin
(
rg
)
, поведение не определено.
|
||
Сложность
Линейно по размеру
rg
. Количество вызовов конструктора
T
точно равно
std
::
ranges::
size
(
rg
)
)
.
Исключения
Если по какой-либо причине возникает исключение, эта функция не оказывает никакого эффекта ( гарантия строгой безопасности исключений ).
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-aware конструирование и вставка |
Пример
#include <cassert> #include <list> #include <vector> int main() { auto head = std::list{1, 2, 3, 4}; const auto tail = std::vector{-5, -6, -7}; #ifdef __cpp_lib_containers_ranges head.append_range(tail); #else head.insert(head.end(), tail.cbegin(), tail.cend()); #endif assert((head == std::list{1, 2, 3, 4, -5, -6, -7})); }
Смотрите также
|
(C++23)
|
добавляет диапазон элементов в начало
(public member function) |
|
(C++23)
|
вставляет диапазон элементов
(public member function) |
|
добавляет элемент в конец
(public member function) |
|
|
(C++11)
|
конструирует элемент на месте в конце
(public member function) |