Jak utworzyć liste z iteratorów innych list?

0

Witam, mam dwie osobne listy, które zawierają wskaźniki do obiektów. Jeśli warunek zostanie spełniony to dwa aktualnie wskazujące obiekty przez iterator chce dodać do jednej wspólnej listy.

Poniższy kod dodaje ładnie elementy do listy, jednak problem jest potem przy zwalnianiu listy i usuwaniu jej, ponieważ jeden lista zawiera 3 te same wskaźniki, gdzie po usunięciu jednego z listy automatycznie usuwane są 2 pozostałe.

Jak moge inaczej dodać do wspólnej listy wskaźniki na obiekty które wskazuje aktualnie iterator?

void znajdz_laczenia_wycieczek()
	{
		wycieczka_objazdowa *m;
		wczasy_pobytowe *p;
		size_t znalezionaPozycja;
		string x, y;
		if (!lista_objazdow.empty() && (!lista_pobytow.empty()))
		{
			for (list<wycieczka*>::iterator it = lista_objazdow.begin(); it != lista_objazdow.end(); it++)
			{
				for (list<wycieczka*>::iterator it2 = lista_pobytow.begin(); it2 != lista_pobytow.end(); it2++)
				{
					x = (*it)->zwroc_miasta();
					y = (*it2)->zwroc_miasta();
					int x2 = (*it)->zwroc_termin1();
					int x1 = (*it2)->zwroc_termin1();
					znalezionaPozycja = x.find(y);
					if ((abs(x2 - x1) <= 2) && (znalezionaPozycja != string::npos))
					{
						lista.push_back((*it));
						lista.push_back((*it2));
					}
				}
			}
		}
	}


oraz zwalnianie list:

void zwolnij_pamiec_list()
	{
		if (!lista.empty())
		{
			for (list<wycieczka*>::iterator it = lista.begin(); it != lista.end(); it++)
					delete (*it); // tutaj sie wysypuje
			lista.clear();
		}
		if (!lista_pobytow.empty())
		{
			for (list<wycieczka*>::iterator it = lista_pobytow.begin(); it != lista_pobytow.end(); it++)
				delete (*it);
			lista_pobytow.clear();
		}
		if (!lista_objazdow.empty())
		{
			for (list<wycieczka*>::iterator it = lista_objazdow.begin(); it != lista_objazdow.end(); it++)
				delete (*it);
			lista_objazdow.clear();
		}
	
	
	}

0
shared_ptr<>
0

Jak miało by to działać ? Jakaś większa podpowiedź? :>

0

mam sczeszczyć dokumentacje?

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