Sortowanie listy przy pomocy STL
Ostatnio zmodyfikowano 2016-05-01 06:13
anors Temat założony przez niniejszego użytkownika |
Sortowanie listy przy pomocy STL » 2016-04-30 21:27:23 Próbowałem posortować listę za pomocą iteratorów i wyskakują mi błędy w pliku algorithm, m. in. C2784. Deklaracja list i fragment kodu: list < Object *> objects; list < Object *>::iterator objectsIt;
sort( objects.begin(), objects.end() ); cout << "List: "; for( objectsIt = objects.begin(); objectsIt != objects.end(); objectsIt++ ) { cout << * objectsIt << " "; } cout << endl;
|
|
carlosmay |
» 2016-04-30 21:38:16 Co to jest ten obiekt Object *? |
|
Monika90 |
» 2016-04-30 21:45:01 Nie da się posortować listy za pomocą std::sort. Jeżeli już musisz ją sortować (wg adresów), to tak: objects.sort( std::less <>() );
A najlepiej użyj wektora. |
|
anors Temat założony przez niniejszego użytkownika |
» 2016-04-30 21:46:41 Wskaźnik na obiekty typu Object. Jest to klasa. class Object { public: int nr; string imie, nazwisko; void wypisz_dane(); Object() { } virtual ~Object() { } }; /[ cpp ] |
|
carlosmay |
» 2016-04-30 22:31:20 cout << * objectsIt << " "; |
zamień na ( * objectIt ).wypisz_dane(); lub objectIt->wypisz_dane(); Do sortowanie obiektów napisz funkcję porównującą wg kryteriów jakie uważasz za właściwe (predykat) i użyj jako parametr metody list.sort(predykat);. |
|
mateczek |
» 2016-05-01 06:13:53 #include<iostream> #include<vector> #include<algorithm> using namespace std;
class czlowiek { int wiek; string imie, nazwisko; public: czlowiek( int w, string im, string naz ) : wiek( w ) , imie( im ) , nazwisko( naz ) { } bool operator <( const czlowiek & c ) { return imie < c.imie; } friend ostream & operator <<( ostream & s, czlowiek & c ); };
std::ostream & operator <<( std::ostream & s, czlowiek & c ) { return s << "imie " << c.imie << "\r\n" << "nazwisko " << c.nazwisko << "\r\n" << "wiek " << c.wiek << "\r\n" << endl; }
int main() { vector < czlowiek > v { { 13, "marek", "marecki" }, { 20, "piotrek", "piotrowski" }, { 10, "adam", "ziemowit" }, { 33, "zygmunt", "adamek" } }; for( czlowiek & c: v ) { cout << c; } sort( v.begin(), v.end() ); cout << endl; cout << "=============\r\nposortowany\r\n=============" << endl; for( czlowiek & c: v ) { cout << c; } }
|
|
« 1 » |