kopiowanie między vectorami

0

Cześć. Mam vector wskaźników na obiekt (nawet 3 vectory), dodaję elementy poprzez push.back. Jeden wektor przechowuje informacje o osobach, drugi o kursach, a trzeci o osobach zapisanych na kursy.
dodanie osoby mam tak :

void biuro::dodaj_klienta() {
	cout << "Podaj imie: ";
	string imie;
	cin >> imie;
	cout << "Podaj nazwisko: ";
	string nazwisko;
	cin >> nazwisko;
	cout << "Podaj stan konta: ";
	double konto;
	cin >> konto;
	nrKlienta++;
	klient = new CKlient(imie, nazwisko, konto);
	klienci.push_back(klient);
	cout << "Przydzielony nr klienta to: " << nrKlienta << end 

kurs w analogiczny sposób. Jednak nie wiem jak sprawić żeby klienta "zapisać" na kurs. Rozumiecie co mam na myśli?

0

ja nie rozumiem.

To co potrzebujesz to

Vector osob (to juz masz)
Vector kursow (to tez juz masz)
Mape kurs -> Vector osob (tego nie masz to musisz zrobic)
http://www.cplusplus.com/reference/map/map/

0

Może niech kurs zawiera wektor zapisanych klientów.

0

Chyba nie rozwiąże to sprawy, bo muszę mieć określone wektory a mapa raczej nie pasuje do zadania. bo jak mam

 vector <CKlient*> klienci;

to wektor uczestnicy też musi wskazywać na obiekty CKlient. Czyli bardziej pomysł _13th_Dragon , ale nie wiem jak zapisać właśnie określonego klienta na określoną wycieczkę.

0

nic nie musi wskazywac. Jedynie co zrobisz to bedziesz miec duplikacje na wskaznikach, ale wartosc obiektu bedzie taka sama. Nie wiem o co chodzi ze uczestnicy musi wskazywac na obiekt CKlient bo wydaje mi sie ze to co piszesz nie ma zadnego sensu. Sprobuj zaimplementowac jedno i drugie i zobaczysz.

Z dodawaniem od @_13th_Dragon jest prosta. Po prostu kurs "posiada" uczestnikow wiec i tak czy siak bedziesz musial skopiowac ta sama wiadomosc (no chyba ze nie moze byc klientow bez kursow to wtedy mozesz o tym zapomniec) wiec co robisz to wiesz jaka osoba chce sie zapisuje. Szukasz na jaki kurs i dajesz push_back ta osobe.

0
kursy[i].zapisani.push_back(klienci[k]);
0

Przy założeniu że klient może być bez kursu i może być na kilku kursach:

  1. Dodaj do kursu i klienta pole GUID identyfikujące encję (unikalne w ramach klasy)
  2. Dodaj mapę (lub multi-mapę) kurs.guid -> klient->guid
  3. Dodaj mapę kurs.guid -> wskaźnik na kurs
  4. Dodaj mapę klient.guid -> wskaźnik na klienta

Wskaźnik chyba najlepiej żeby był "sprytny" - np. shared_ptr.

A tak w ogóle to użyj SQLite i zapomnij o powyższym.

0

Tak tylko, że jestem początkujący, a poza tym mam to robic według wytycznych z zajęć. Więc tak jak wektor klienci trzymający klientów, tak wektor kursy trzyma kursy i wektor uczestnicy ma trzymać określonych klientów w określonych klientach. Czyli jak dodam kurs1,kurs2 i klienta1,klienta2 to co mam zrobić żeby klienta1 zapisać na kurs2 i trzymać to w wektorze uczetnicy?

0

jestes poczatkujacym... no i? Dlatego Ci przeciez pomagamy i wyjasniamy
super ze masz wytyczne z zajec a skad my mamy wiedziec o tych wytycznych? Czytamy w myslach czy co?

Reszta to belkot. ktorego nie potrafie zrozumiec

0
kursy[1].uczetnicy.push_back(klienci[0]);
0
_13th_Dragon napisał(a):
kursy[1].uczetnicy.push_back(klienci[0]);

Dzięki. Jednak kompilator wyrzucił mi przy tym błąd. Po zmianie na

kursy[1]->uczetnicy.push_back(klienci[0]);

Poszło (znazłem podobny problem w internecie ).

0

Wracam z problemem usunięcia elementu z wektora.

kursy[i]->uczestnicy.erase(klienci[j]); 

Tak wiem, że źle. Próbowałem z iteratorem, ale nie wychodziło.

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