Łączenie dwóch list bez sortowania

0

Cześć, mam pytanie czy da się połączyć dwie listy obiektów bez sortowania w C++? Najlepiej, by doczepiony został oryginał drugiej listy (bez kopiowania obiektów).
Wiem, że istnieje coś takiego jak merge, ale to wymusza sortowanie obiektów a tego robić nie chcę.
Chodzi o to, że mam kilka dość długich list własnych obiektów i chcę je połączyć w jedną a zależy mi na optymalnym rozwiązaniu więc fajnie, jakby one się tylko "doczepiły" do siebie ;-).
Z góry dzięki za pomoc.

1

O jaka konkretnie liste chodzi?

Bo jesli masz jakas wlasna immutable struktura, to tak, da sie z doczepianiem. Jesli nie, n-1 list musisz skopiowac.

0
#include <iostream>
#include <list>
using namespace std;

template<typename T>
list<T> operator+(const list<T> &a, const list<T> &b){
	list<T> result = a;
	for(const auto &item : b)
		result.push_back(item);
	return result;
}

int main() {
	list<int> a = { 1, 4, 6 }, b = { 2, 3, 5 };
	for(auto item : a + b)
		cout << item << endl;
	return 0;
}

out:

1
4
6
2
3
5
0

Dzięki wielkie - szczególnie dla @Lord Darkstorm Przeoczyłem funkcję splice, która robi to o co mi chodziło ;-).
pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1