Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Eine Klasse sortieren?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.06.2007, 17:33 Uhr
Peccadillo



Hallo,

ich habe ein Array der folgenden kleinen Klasse:

C++:
class Listeneintrag
{
  public:
    std::string Name;
    int Level;
    int Versuche;
    int Zeit;
};
...
Listeneintrag Liste[10];


Nun möchte ich die Einträge in dem Array nach Level, Versuche, Zeit und als letztes nach dem Namen sortieren, aber ich habe überhaupt gar keine Idee wie ich das machen könnte. Hat da vielleicht jemand einen Tipp der mir auf die Sprünge helfen könnte?

lg,
Ina
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.06.2007, 17:59 Uhr
mike
Pinguinhüpfer
(Operator)


Hallo

Entweder du implemetierst es selber
http://en.wikipedia.org/wiki/Bubble_sort (einfach)
http://en.wikipedia.org/wiki/Quicksort bzw. in deinem Fall http://en.wikipedia.org/wiki/Insertion_sort

Oder du verwendest Container (z.B. vector) und nimmst generische algorithmen (z.b. sort).
Bei sort kannst du entweder einen passenden Operator überladen in deine Klasse oder du übergibst sort eine Vergleichsfunktion

lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.06.2007, 18:09 Uhr
0xdeadbeef
Gott
(Operator)



C++:
bool operator<(Listeneintrag const &l1, Listeneintrag const &l2) {
  if(l1.Level < l2.Level) return true;
  if(l1.Level > l2.Level) return false;

  if(l1.Versuche < l2.Versuche) return true;
  if(l1.Versuche > l2.Versuche) return false;

  if(l1.Zeit < l2.Zeit) return true;
  if(l1.Zeit > l2.Zeit) return false;

  return l1.Name < l2.Name;
}

// ...

std::sort(Liste, Liste + 10);


...für std::sort muss der header <algorithm> eingebunden werden.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.06.2007, 18:52 Uhr
Peccadillo



Danke

Das hilft mir jetzt schon mal weiter, werds gleich mal ausprobieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: