std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: insert_range
|
template
<
container-compatible-range
<
value_type
>
R
>
void insert_range ( R && rg ) ; |
(seit C++23)
(constexpr seit C++26) |
|
Fügt eine Kopie jedes Elements im Bereich
rg
in die zugrundeliegenden Container
c
ein, als ob durch:
for (const auto& e : rg) { c.keys.insert(c.keys.end(), e.first); c.values.insert(c.values.end(), e.second); }
Sortiert dann den Bereich der neu eingefügten Elemente bezüglich value_comp() . Führt den resultierenden sortierten Bereich und den sortierten Bereich der bereits vorhandenen Elemente zu einem einzigen sortierten Bereich zusammen.
Jeder Iterator im Bereich rg wird genau einmal dereferenziert.
Wenn eine der folgenden Bedingungen erfüllt ist, ist das Verhalten undefiniert:
-
value_typeist nicht EmplaceConstructible inflat_multimapaus * ranges:: begin ( rg ) - rg und * this überlappen sich.
| Informationen zur Iterator-Invalidierung sind kopiert von hier |
Inhaltsverzeichnis |
Parameter
| rg | - |
ein
container compatible range
, also ein
input_range
, dessen Elemente konvertierbar zu
T
sind
|
Komplexität
S+N·log(N) , wobei S die size ( ) und N den ranges:: distance ( rg ) darstellt.
Hinweise
Da
insert_range
einen In-Place-Merge-Vorgang durchführt, kann dies Speicher allozieren.
Beispiel
#include <iostream> #include <flat_map> #include <utility> void println(auto, const auto& container) { for (const auto& [key, value] : container) std::cout << '{' << key << ',' << value << '}' << ' '; std::cout << '\n'; } int main() { auto container = std::flat_multimap{std::pair{1, 11}, {3, 33}, {2, 22}, {4, 44}}; const auto rg = {std::pair{-1, -11}, {3, -33}, {-2, -22}}; #ifdef __cpp_lib_containers_ranges container.insert_range(rg); #else container.insert(rg.begin(), rg.end()); #endif println("{}", container); }
Ausgabe:
{-2,-22} {-1,-11} {1,11} {2,22} {3,33} {3,-33} {4,44}
Siehe auch
|
fügt Elemente ein
(öffentliche Elementfunktion) |