Vector - 3 wymiarowy?


(Ovitz Pl) #1

Witam potrzebuje programy który na początek wczyta dane z pliku np.

1 2008 5 21

2 2009 4 11

id - rok - miesiac - dzien

No i czy da rade je wczytać do vektora, potem różne operacje na nich przeprowadzać?


(Fiołek) #2

Co za problem wczytać? Piszesz strukture przechowywującą id, rok, miesiąc i dzień a potem fscanfem(jeśli używasz cstdio) lub istreamem wczytujesz każdą linijkę. Wczytany obiekt dodajesz do wektora.

Przykład:

struktura tmp; //Tymczasowa struktura z id, rokiem, miesiącem i dniemwhile(fscanf(plik, "%d %d %d %d", tmp.id, tmp.rok, tmp.miesiac, tmp.dzien))   wektor.push_back(tmp); [/code]

(Ovitz Pl) #3

Wtedy w jaki sposób moge operować na "środkowych" danych z tego wektora?


(Sawyer47) #4

Jeśli zrobisz tak jak proponuje Fiołek to przecież masz wektor obiektów, dane są w polach struktury: wektor[indeks].id, wektor[indeks].rok, wektor[indeks].miesiac, wektor[indeks].dzien.


(Kontakt) #5

Jest jeszcze możliwość tworzenia par.

vector < pair< int, int> > v;

Wtedy odwołanie się do pierwszego i'tego int'a (może tam być każda zmienna: string, long, float itd.) następuje poprzez

v[i].first

do drugiego:

v[i].second

Tak też możesz stworzyć 3 wymiarowego vectora:

vector < pair < int, pair > > v;

wtedy np.:

v[i].first.first

:wink: Musisz wtedy też pamiętać, że np. w przypadku vectora dwuwymiarowego dodajesz tak:

int a, b;

cin >> a >> b;

vector < pair< int, int> > v;

v.push_back( make_pair(a,b) );

:wink:


(Sawyer47) #6

@up bardzo niewygodne, jak już to wygodniej użyć krotek. A w związku z tym, że nie ma ich w bibliotece standardowej (jeszcze) to chyba struktura jest najodpowiedniejsza.


([alex]) #7