std::deque<T,Allocator>::prepend_range
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Containers library
(C++17)
(C++11)
(C++26)
(C++26)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++23)
(C++23)
(C++23)
(C++23)
(C++20)
(C++23)
Tables
std::deque
Non-member functions
Deduction guides (C++17)
(C++23)
(C++11)
(C++11)
(C++11)
(C++11)
(DR*)
(C++23)
(C++11)
deque::prepend_range
(C++23)
(C++11)
(C++23)
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)
template< container-compatible-range <T> R >
void prepend_range( R&& rg );
(since C++23) void prepend_range( R&& rg );
(constexpr since C++26)
Inserts, in non-reversing order, copies of elements in rg before begin(). Each iterator in the range rg is dereferenced exactly once.
All iterators (including the end() iterator) are invalidated. No references are invalidated.
Contents
[edit] Parameters
Type requirements
-If any of the following conditions is satisfied, the behavior is undefined:
-
Tis not EmplaceConstructible intodequefrom *ranges::begin (rg). -
Tis not MoveInsertable intodeque. -
Tdoes not satisfy the requirements of MoveConstructible, MoveAssignable, or Swappable.
-
[edit] Complexity
Linear in size of rg.
[edit] Notes
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Ranges-aware construction and insertion |
[edit] Example
Run this code
#include <algorithm> #include <cassert> #include <deque> #include <vector> int main() { auto container = std::deque {0, 1, 2, 3}; const auto rg = std::vector {-3, -2, -1}; #if __cpp_lib_containers_ranges container.prepend_range(rg); #else container.insert(container.begin(), rg.cbegin(), rg.cend()); #endif assert (std::ranges::equal (container, std::deque {-3, -2, -1, 0, 1, 2, 3})); }