std::forward_list<T,Allocator>:: merge
|
void
merge
(
forward_list
&
other
)
;
|
(1) |
(seit C++11)
(constexpr seit C++26) |
|
void
merge
(
forward_list
&&
other
)
;
|
(2) |
(seit C++11)
(constexpr seit C++26) |
|
template
<
class
Compare
>
void merge ( forward_list & other, Compare comp ) ; |
(3) |
(seit C++11)
(constexpr seit C++26) |
|
template
<
class
Compare
>
void merge ( forward_list && other, Compare comp ) ; |
(4) |
(seit C++11)
(constexpr seit C++26) |
Führt zwei sortierte Listen zu einer sortierten Liste zusammen.
- Wenn other auf dasselbe Objekt wie * this verweist, wird nichts unternommen.
- Andernfalls werden alle Elemente von other zu * this übertragen. other ist nach dem Zusammenführen leer.
Dieser Vorgang ist stabil:
- Für äquivalente Elemente in den beiden Listen gehen die Elemente von * this stets den Elementen von other voraus.
- Die Reihenfolge äquivalenter Elemente von * this und other ändert sich nicht.
- * this oder other ist nicht sortiert bezüglich des Vergleichs comp .
- get_allocator ( ) == other. get_allocator ( ) ist false .
Keine Iteratoren oder Referenzen werden ungültig. Die Zeiger und Referenzen auf die Elemente, die von * this verschoben wurden, sowie die Iteratoren, die auf diese Elemente verweisen, werden auf dieselben Elemente von * this verweisen, anstatt auf other .
InhaltParameter
Rückgabewert(kein) ExceptionsWenn aus irgendeinem Grund eine Exception ausgelöst wird, haben diese Funktionen keine Wirkung ( strong exception safety guarantee ). Außer wenn die Exception von einem Vergleich stammt. KomplexitätWenn other auf dasselbe Objekt wie * this verweist, werden keine Vergleiche durchgeführt. Andernfalls, gegeben N 1 als std:: distance ( begin ( ) , end ( ) ) und N 2 als std:: distance ( other. begin ( ) , other. end ( ) ) :
1,2)
Höchstens
N
1
+N
2
-1
Vergleiche unter Verwendung von
operator
<
.
3,4)
Höchstens
N
1
+N
2
-1
Anwendungen der Vergleichsfunktion
comp
.
Beispiel
Diesen Code ausführen
#include <iostream> #include <forward_list> std::ostream& operator<<(std::ostream& ostr, const std::forward_list<int>& list) { for (const int i : list) ostr << ' ' << i; return ostr; } int main() { std::forward_list<int> list1 = {5, 9, 1, 3, 3}; std::forward_list<int> list2 = {8, 7, 2, 3, 4, 4}; list1.sort(); list2.sort(); std::cout << "list1: " << list1 << '\n'; std::cout << "list2: " << list2 << '\n'; list1.merge(list2); std::cout << "merged:" << list1 << '\n'; } Ausgabe: list1: 1 3 3 5 9 list2: 2 3 4 4 7 8 merged: 1 2 3 3 3 4 4 5 7 8 9 FehlerberichteDie folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
Siehe auch
| ||||||||||||||||||||||||||||||||||||