[C++] wyświetlanie posortowanego wektora z użyciem STL

anors
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 30 kwie 2016, o 22:20
Płeć: Kobieta
Lokalizacja: Warszawa

[C++] wyświetlanie posortowanego wektora z użyciem STL

Post autor: anors »

Chcę wypisać dane posortowanego wektora za pomocą metody wypisz_dane i mi wyświetla błąd:
Error C2065 'wypisz_dane': undeclared identifier

Ktoś może się orientuje jak to naprawić?

Kod: Zaznacz cały

void Student::wypisz_dane()
{
	cout << "Nr albumu: " << nr_albumu;
	cout << "\tImie: " << imie;
	cout << "\tNazwisko: " << nazwisko << endl;
}
	vector <Student *> vStudenci; //deklaracja wektora
	
//sortowanie
	sort(vStudenci.begin(), vStudenci.end() );
	cout << "Lista: ";
	for_each(vStudenci.begin(), vStudenci.end(), wypisz_dane);
Awatar użytkownika
morsisko
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 10 lut 2015, o 17:46
Płeć: Mężczyzna
Lokalizacja: Antarktyda

[C++] wyświetlanie posortowanego wektora z użyciem STL

Post autor: morsisko »

1. Dla std::sort musisz podać algorytm porównania(a raczej powinnaś), dlatego, że kompilator nie wie do końca według czego ma porównywać studentów, trzeba mu to jasno sprecyzować. Podpowiem, że od c++11 możesz tam użyć lamdy, dam jeszcze większą podpowiedź. Funkcja porównawcza ma zwrócić prawdę dla mniejszej wartości(jeśli chcesz posortować od najmniejszego do największego).

2. Użyj zwykłego foreach, tj. for (Student* student : vStudenci).
anors
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 30 kwie 2016, o 22:20
Płeć: Kobieta
Lokalizacja: Warszawa

[C++] wyświetlanie posortowanego wektora z użyciem STL

Post autor: anors »

A co mam podać w parametrach funkcji porównującej?
Awatar użytkownika
morsisko
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 10 lut 2015, o 17:46
Płeć: Mężczyzna
Lokalizacja: Antarktyda

[C++] wyświetlanie posortowanego wektora z użyciem STL

Post autor: morsisko »

std::sort będzie podawał do funkcji dwa argumenty, Student* a i Student*b, ty masz zwrócić prawdę jeśli "a" będzie mniejszy niż "b". Dam przykład lambdy
[](Student* a, Student* b){funkcja porównująca, ma zwrócić prawdę jeśli Student* a jest mniejszy;};

Ogólnie to wszystko jest podane tutaj:
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] wyświetlanie posortowanego wektora z użyciem STL

Post autor: Afish »

anors pisze:Ktoś może się orientuje jak to naprawić?
Ta metoda nie jest globalna, jest składową klasy, więc nie możesz jej ot tak przekazać bez obiektu.
ODPOWIEDZ