std::inplace_vector<T,N>::assign_range
Von cppreference.com
< cpp | container | inplace vector
| template< container-compatible-range<T> R > constexpr void assign_range( R&& rg ); |
(seit C++26) | |
Ersetzt Elemente im Container durch eine Kopie jedes Elements in rg.
| Dieser Abschnitt ist unvollständig |
Jeder Iterator im Bereich rg wird genau einmal dereferenziert.
Das Verhalten ist undefiniert, wenn rg mit dem Container überlappt.
Inhalt |
[bearbeiten] Parameter
| rg | - | ein input_range mit einem Referenztyp, der in den Elementtyp des Containers konvertierbar ist |
| Typanforderungen | ||
| -std::assignable_from<T&, ranges::range_reference_t<R>> muss modelliert sein. Andernfalls ist das Programm fehlerhaft. | ||
-T muss aus *ranges::begin(rg) in den Container EmplaceConstructible sein. Andernfalls ist das Verhalten undefiniert. | ||
[bearbeiten] Rückgabewert
(keine)
Ausnahmen
- bad_alloc, wenn std::ranges::distance(rg) > capacity().
- Jede Ausnahme, die bei der Initialisierung eines eingefügten Elements ausgelöst wird.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <algorithm> #include <cassert> #include <initializer_list> #include <inplace_vector> #include <iostream> #include <new> int main() { const auto source = {1, 2, 3}; std::inplace_vector<int, 4> destination{4, 5}; destination.assign_range(source); assert(std::ranges::equal(destination, source)); try { const auto bad = {-1, -2, -3, -4, -5}; destination.assign_range(bad); // throws: bad.size() > destination.capacity() } catch(const std::bad_alloc& ex) { std::cout << ex.what() << '\n'; } }
Mögliche Ausgabe
std::bad_alloc
[bearbeiten] Siehe auch
| fügt einen Bereich von Elementen ein (öffentliche Memberfunktion) | |
| fügt einen Bereich von Elementen am Ende hinzu (öffentliche Memberfunktion) | |
| weist dem Container Werte zu (öffentliche Memberfunktion) | |
| weist dem Container Werte zu (öffentliche Memberfunktion) |