std::inplace_vector<T,N>:: append_range
|
template
<
container-compatible-range
<
T
>
R
>
constexpr void append_range ( R && rg ) ; |
(seit C++26) | |
Fügt Kopien von Elementen aus dem Bereich
rg
vor
end()
ein, in nicht umgekehrter Reihenfolge.
Jeder Iterator in rg wird genau einmal dereferenziert.
Inhaltsverzeichnis |
Parameter
| rg | - |
ein
container compatible range
, also ein
input_range
, dessen Elemente konvertierbar zu
T
sind
|
| Typanforderungen | ||
-
T
nicht
EmplaceConstructible
in
inplace_vector
aus
*
ranges::
begin
(
rg
)
ist, ist das Verhalten undefiniert.
|
||
Komplexität
Linear in der Größe von
rg
. Die Anzahl der Aufrufe des Konstruktors von
T
ist genau gleich
std
::
ranges::
size
(
rg
)
)
.
Ausnahmen
Wirft
std::bad_alloc
falls
std
::
ranges::
size
(
rg
)
>
N
.
Wenn eine Ausnahme ausgelöst wird, die nicht vom Kopierkonstruktor, Move-Konstruktor, Zuweisungsoperator oder Move-Zuweisungsoperator von
T
oder durch eine
InputIterator
-Operation stammt, gibt es keine Effekte.
Andernfalls, wenn eine Ausnahme ausgelöst wird, dann gilt
size
(
)
>=
n
und Elemente im Bereich
[
0
,
n
)
sind unverändert,
wobei
n
der Wert von
size()
vor diesem Aufruf ist.
Beispiel
#include <cassert> #include <inplace_vector> #include <iostream> int main() { using I = std::inplace_vector<int, 8>; auto head = I{1, 2, 3, 4}; const auto tail = {-5, -6, -7}; head.append_range(tail); assert(head.size() == 7 and (head == I{1, 2, 3, 4, -5, -6, -7})); try { head.append_range(tail); // throws: no space { catch(const std::bad_alloc&) { std::cout << "std::bad_alloc\n"; } }
Ausgabe:
std::bad_alloc
Siehe auch
|
versucht, eine Reihe von Elementen am Ende hinzuzufügen
(öffentliche Elementfunktion) |
|
|
fügt eine Reihe von Elementen ein
(öffentliche Elementfunktion) |
|
|
fügt ein Element am Ende hinzu
(öffentliche Elementfunktion) |
|
|
konstruiert ein Element direkt am Ende
(öffentliche Elementfunktion) |