Sortowanie vectoru

0

Mam taką strukturę:

 struct Film {
	char tytul[50];
	char tytul_eng[50];
	char gatunek[30];
	char rezyser[30];
	int czas_trwania;
	int rok_produkcji;
	int cena;
	bool status;
};

i do tego takie cos

 
int main()
{
	vector<Film> vFilm;
	Film film;

	strcpy(film.tytul, "Porwanie");
	strcpy(film.tytul_eng, "Abduction");
	strcpy(film.gatunek, "Thriller");
	strcpy(film.rezyser, "John Singleton");
	film.czas_trwania = 106;
	film.rok_produkcji = 2011;
	film.cena = 35;
	film.status = false;

	vFilm.push_back(film);

	strcpy(film.tytul, "Pasja");
	strcpy(film.tytul_eng, "The Passion of the Christ");
	strcpy(film.gatunek, "Dramat");
	strcpy(film.rezyser, "Mel Gibson");
	film.czas_trwania = 127;
	film.rok_produkcji = 2004;
	film.cena = 40;
	film.status = true;

	vFilm.push_back(film);

	strcpy(film.tytul, "Zielona mila");
	strcpy(film.tytul_eng, "The Green Mile");
	strcpy(film.gatunek, "Dramat");
	strcpy(film.rezyser, "Frank Darabont");
	film.czas_trwania = 188;
	film.rok_produkcji = 199;
	film.cena = 30;
	film.status = false;

	vFilm.push_back(film);

	return 0;
}

Mój kod jest o wiele bogatszy, ale chcę przedstawić tylko ogólnie na czym polega problem. Program ten ma możliwość dodawania nowych filmów przez użytkownika. Ma także opcję odczytywania tych filmów, podglądania statystyk, usuwania oraz edycji filmów. Jedną z funkcji ma być też sortowanie tych filmów według roku produkcji. Niestety nie mam pojęcia jak to zrobić. Byłbym wdzięczny za podpowiedzi. Szukałem tego dużo w google, ale niestety nic nie znalazłem konkretnego. Była metoda sort() z biblioteki algorithm, ale nie bardzo mogę ją w tym przypadku użyć, albo nie potrafię. Jakieś pomysły?

0
//najpierw tworzysz funkcje ktora porownuje ktory element jest wiekszy:
bool funkcja_porownujaca(const Film& a, const Film& b)
{
  return a.cena<b.cena; // przyklad
}

//w kodzie:
sort(kontenerfilmow.begin(),kontenerfilmow.end(),funkcja_porownujaca);

a tutaj masz nawet przykład......:
http://www.cplusplus.com/reference/algorithm/sort/

0

Czy mogę Cię prosić o wyjaśnienie mi jak działa funkcja "funkcja_porownujaca"? Wiem, że porównuje rekordy, ale nie rozumiem Jej działania i zastosowania w funkcji sort().

0

Chodzi mi bardziej o to, dlaczego funkcja_porownujaca nie posiada argumentów w funkcji sort(). Skąd ona je bierze? (wiem, że z mojego kontenera filmów, ale w jakiej kolejności). I czy te filmy posortują się na stałe w tym kontenerze?

Taki przykład:
Mamy kontenerFilmow i ma on załóżmy dwa rekordy. Jeśli np. na początku pod kontenerFilmow[0] był film A, a następny był film B, to po posortowaniu zmieni się kolejność tych filmów w kontenerze?

edit:
Nie było pytania..
Moja funkcja

void pokazWszystkieFilmy(vector<Film> vFilm)

powinna wyglądać tak: void pokazWszystkieFilmy(vector<Film> &vFilm)


Dziękuje za pomoc :)
0

poczytaj o wskaźnikach na funkcje i wszystko się rozjaśni :P

twoja funkcja powinna wyglądać tak:

void pokazWszystkieFilmy(const vector<Film> &vFilm)

wtedy na pewno przypadkiem w jej wnętrzu nie zmienisz vectora filmów

0

słuszna uwaga :) dzięki raz jeszcze

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