std::priority_queue<T,Container,Compare>:: push_range
|
template
<
container-compatible-range
<
value_type
>
R
>
void push_range ( R && rg ) ; |
(seit C++23) | |
Fügt eine Kopie jedes Elements von
rg
in die
priority_queue
ein, wie durch:
-
c.
append_range
(
std::
forward
<
R
>
(
rg
)
)
falls dies ein gültiger Ausdruck ist (d.h. der zugrunde liegende Container
c
über eine entsprechende
append_rangeMember-Funktion verfügt), oder - ranges:: copy ( rg, std:: back_inserter ( c ) ) andernfalls.
Stellt dann die Heap-Eigenschaft wieder her, als ob durch ranges:: make_heap ( c, comp ) . Nach dem Einfügen ist ranges:: is_heap ( c, comp ) true .
Jeder Iterator im Bereich rg wird genau einmal dereferenziert.
Inhaltsverzeichnis |
Parameter
| rg | - |
ein
container kompatibler Bereich
, also ein
input_range
, dessen Elemente konvertierbar zu
T
sind
|
Komplexität
Die Komplexität von c. append_range plus die Komplexität von ranges:: make_heap ( c, comp ) .
Hinweise
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-bewusste Konstruktion und Einfügung |
Beispiel
#include <initializer_list> #include <queue> #include <version> #ifdef __cpp_lib_format_ranges #include <print> using std::println; #else #define FMT_HEADER_ONLY #include <fmt/ranges.h> using fmt::println; #endif int main() { std::priority_queue<int> adaptor; const auto rg = {1, 3, 2, 4}; #ifdef __cpp_lib_containers_ranges adaptor.push_range(rg); #else for (int e : rg) adaptor.push(e); #endif println("{}", adaptor); }
Ausgabe:
[4, 3, 2, 1]
Siehe auch
|
Fügt Element ein und sortiert den zugrundeliegenden Container
(öffentliche Elementfunktion) |