std::inplace_vector<T,N>::assign
Von cppreference.com
< cpp | container | inplace vector
| constexpr void assign( size_type count, const T& value ); |
(1) | (seit C++26) |
| template< class InputIt > constexpr void assign( InputIt first, InputIt last ); |
(2) | (seit C++26) |
| constexpr void assign( std::initializer_list<T> ilist ); |
(3) | (seit C++26) |
Ersetzt den Inhalt des Containers.
1) Ersetzt den Inhalt durch count Kopien von value value.
2) Ersetzt den Inhalt durch Kopien der Elemente im Bereich
[first, last). Wenn eines der Argumente ein Iterator in *this ist, ist das Verhalten undefiniert. Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn
InputIt LegacyInputIterator erfüllt.3) Ersetzt den Inhalt durch die Elemente aus ilist.
| Dieser Abschnitt ist unvollständig |
Inhalt |
[bearbeiten] Parameter
| zählt | - | die neue Größe des Containers |
| value | - | der Wert, mit dem die Elemente des Containers initialisiert werden sollen |
| first, last | - | das Iteratorpaar, das den Quell-Bereich der zu kopierenden Elemente definiert |
| ilist | - | std::initializer_list, aus dem die Werte kopiert werden sollen |
[bearbeiten] Komplexität
1) Linear in count.
2) Linear in der Distanz zwischen first und last.
3) Linear in ilist.size().
Ausnahmen
1-3) Jede Ausnahme, die bei der Initialisierung von eingefügten Elementen ausgelöst wird.
[bearbeiten] Beispiel
Der folgende Code verwendet assign, um mehrere Zeichen zu einem std::inplace_vector<char, 5> hinzuzufügen
Führen Sie diesen Code aus
#include <inplace_vector> #include <iterator> #include <new> #include <print> int main() { std::inplace_vector<char, 5> chars; chars.assign(4, 'a'); // overload (1) std::println("{}", chars); const char extra[3]{'a', 'b', 'c'}; chars.assign(std::cbegin(extra), std::cend(extra)); // overload (2) std::println("{}", chars); chars.assign({'C', '+', '+', '2', '6'}); // overload (3) std::println("{}", chars); try { chars.assign(8, 'x'); // throws: count > chars.capacity() } catch(const std::bad_alloc&) { std::println("std::bad_alloc #1"); } try { const char bad[8]{'?'}; // ranges::distance(bad) > chars.capacity() chars.assign(std::cbegin(bad), std::cend(bad)); // throws } catch(const std::bad_alloc&) { std::println("std::bad_alloc #2"); } try { const auto l = {'1', '2', '3', '4', '5', '6'}; chars.assign(l); // throws: l.size() > chars.capacity() } catch(const std::bad_alloc&) { std::println("std::bad_alloc #3"); } }
Ausgabe
['a', 'a', 'a', 'a'] ['a', 'b', 'c'] ['C', '+', '+', '2', '6'] std::bad_alloc #1 std::bad_alloc #2 std::bad_alloc #3
[bearbeiten] Siehe auch
| weist dem Container einen Bereich von Werten zu (public member function) | |
| weist dem Container Werte zu (public member function) |