std::inplace_vector<T,N>:: assign
From cppreference.net
<
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 des Werts
value
.
2)
Ersetzt den Inhalt durch Kopien aus dem Bereich
[
first
,
last
)
.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn
InputIt
die Anforderungen eines
LegacyInputIterator
erfüllt.
Wenn
first
oder
last
ein Iterator in
*
this
ist, ist das Verhalten undefiniert.
3)
Ersetzt den Inhalt durch die Elemente aus
ilist
.
| Dieser Abschnitt ist unvollständig |
Inhaltsverzeichnis |
Parameter
| count | - | die neue Größe des Containers |
| value | - | der Wert zur Initialisierung der Elemente des Containers |
| first, last | - | das Iteratorpaar, das den Quell- Bereich der zu kopierenden Elemente definiert |
| ilist | - | std::initializer_list zum Kopieren der Werte |
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 durch die Initialisierung eingefügter Elemente ausgelöst wird.
Beispiel
Der folgende Code verwendet
assign
, um mehrere Zeichen zu einem
std::
inplace_vector
<
char
,
5
>
hinzuzufügen:
Diesen Code ausführen
#include <inplace_vector> #include <iterator> #include <new> #include <print> int main() { std::inplace_vector<char, 5> chars; chars.assign(4, 'a'); // Überladung (1) std::println("{}", chars); const char extra[3]{'a', 'b', 'c'}; chars.assign(std::cbegin(extra), std::cend(extra)); // Überladung (2) std::println("{}", chars); chars.assign({'C', '+', '+', '2', '6'}); // Überladung (3) std::println("{}", chars); try { chars.assign(8, 'x'); // wirft Exception: 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)); // wirft Exception } catch(const std::bad_alloc&) { std::println("std::bad_alloc #2"); } try { const auto l = {'1', '2', '3', '4', '5', '6'}; chars.assign(l); // wirft Exception: 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
Siehe auch
|
weist einen Wertebereich dem Container zu
(öffentliche Elementfunktion) |
|
|
weist Werte dem Container zu
(öffentliche Elementfunktion) |