std::priority_queue<T,Container,Compare>::push_range
Von cppreference.com
< cpp | container | priority queue
| 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, als ob durch
- c.append_range(std::forward<R>(rg)) wenn dies ein gültiger Ausdruck ist (d. h. der zugrunde liegende Container c hat eine geeignete
append_range-Memberfunktion), 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 der Einfügung ist ranges::is_heap(c, comp) true.
Jeder Iterator im Bereich rg wird genau einmal dereferenziert.
Inhalt |
[bearbeiten] Parameter
| rg | - | Ein Container-kompatibler Bereich, d. h. ein input_range, dessen Elemente in T konvertierbar sind |
[bearbeiten] Komplexität
Die Komplexität von c.append_range plus die Komplexität von ranges::make_heap(c, comp).
[bearbeiten] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Ranges-kompatible Konstruktion und Einfügung |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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]
[bearbeiten] Siehe auch
| fügt ein Element ein und sortiert den zugrunde liegenden Container (public member function) |