std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>::insert_range
Von cppreference.com
< cpp | container | flat multimap
| template< container-compatible-range<value_type> R > void insert_range( R&& rg ); |
(seit C++23) | |
Fügt eine Kopie jedes Elements aus dem Bereich rg in die zugrunde liegenden 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 in Bezug auf value_comp(). Fasst 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. Das Verhalten ist undefiniert, wenn rg mit dem Container überlappt.
| Informationen zur Iterator-Invalidierung sind von hier kopiert. |
Inhalt |
[bearbeiten] Parameter
| rg | - | Ein Container-kompatibler Bereich, d. h. ein input_range, dessen Elemente in T konvertierbar sind |
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Komplexität
N + M·log(M), wobei N die size() vor der Operation und M der ranges::distance(rg) ist.
[bearbeiten] Hinweise
Da insert_range eine In-Place-Merge-Operation durchführt, die Speicher zuweisen kann.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <flat_map> #include <utility> void println(auto, auto const& 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}[bearbeiten] Siehe auch
| fügt Elemente ein (public member function) |