Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.09.2005, 10:13 Titel: stl::list sortieren |
|
|
Ich habe eine Liste in der eine Struktur gespeichert ist. Jetzt möchte ich die Liste nach einem Element aus der Struktur sortieren. Wie geht das am einfachsten? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 10.09.2005, 10:34 Titel: |
|
|
Christian Rousselle
std::sort fällt bei std::list absolut flach, da die architektur von std::list einen Zugriff auf innere Objekte nicht zulässt. std::sort funktioniert sonst bei fast allem. Für std::list gibt es std::list::sort
Jonathan_Klein
Hab ich dir nicht damals etwas gegeben wo gezeigt wird wie man einen std::vector nach kriterien sortiert? _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.09.2005, 11:32 Titel: |
|
|
ka, glabue nicht, außerdem will ichs ja mit ner list machen _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 10.09.2005, 11:44 Titel: |
|
|
std::list::sort
was ist damit? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.09.2005, 12:06 Titel: |
|
|
CPP: | // list_sort.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter;
c1.push_back( 20 );
c1.push_back( 10 );
c1.push_back( 30 );
cout << "Before sorting: c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
c1.sort( );
cout << "After sorting c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
c1.sort( greater<int>( ) );
cout << "After sorting with 'greater than' operation, c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
} |
Also, NUR sort() funktinoiert nicht, gibt lustige, komische Fehler. Und das Sort mit dem parameter den kapier ich net, was ich da angeben kann. Es wäre sehrfein wenn ich:
CPP: | struct Struktur
{
int i1;
int i2;
};
std::list<Struktur> Liste;
Liste::sort("Liste nach Struktur.i2 sorteiren");
|
machen könnte. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 10.09.2005, 12:11 Titel: |
|
|
Für das sort ohne Parameter musst du den < operator (oder wars der > ? ) für deine Struktur überladen, ansonsten musst du halt ne Vergleichsfunktion angeben. _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.09.2005, 12:21 Titel: |
|
|
wenn ich die Struktur mit dem Operator ausrüsten will, muss ich den dann net zur Klasse machen? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 10.09.2005, 12:36 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | wenn ich die Struktur mit dem Operator ausrüsten will, muss ich den dann net zur Klasse machen? |
Nein,.
CPP: | bool operator < (const deine_struct& a, const deine_struct& b)
{
...
}
|
_________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.09.2005, 13:03 Titel: |
|
|
[quote="OLiver"] Jonathan_Klein hat Folgendes geschrieben: | wenn ich die Struktur mit dem Operator ausrüsten will, muss ich den dann net zur Klasse machen? |
Braucht man auch nicht, OLiver... mit einer struct kannst du alles machen, was du auch mit einer Klasse tun kannst, nur dass in einer struct grundsätzlich erstmal alles public ist. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Dragon Super JLI'ler
Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 10.09.2005, 14:42 Titel: |
|
|
ist doch ganz easy
CPP: | #include <iostream>
#include <list>
#include <algorithm>
#include <string>
struct Person
{
int nr;
std::string name;
};
struct SortPersonByNr
{
bool operator()(const Person& rhs, const Person& lhs)
{
return rhs.nr < lhs.nr;
}
};
int main()
{
std::list<Person> personen;
std::list<Person>::iterator it;
Person p;
p.nr = 1234;
p.name = "Sven";
personen.push_back(p);
p.nr = 3432;
p.name = "Max";
personen.push_back(p);
p.nr = 554;
p.name = "Nek";
personen.push_back(p);
std::cout << "Vor dem Sortieren" << std::endl;
for(it = personen.begin(); it != personen.end(); it++)
std::cout << (*it).nr << '\t' << (*it).name << std::endl;
std::cout << "Liste wird sortiert ..." << std::flush;
personen.sort(SortPersonByNr());
std::cout << "fertig!" << std::endl;
std::cout << "Nach dem Sortieren" << std::endl;
for(it = personen.begin(); it != personen.end(); it++)
std::cout << (*it).nr << '\t' << (*it).name << std::endl;
std::cin.sync();
std::cin.get();
return 0;
} |
mfg dragon _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 10.09.2005, 15:38 Titel: |
|
|
Zitat: |
Braucht man auch nicht, OLiver... mit einer struct kannst du alles machen, was du auch mit einer Klasse tun kannst, nur dass in einer struct grundsätzlich erstmal alles public ist.
|
[krümelkack]
Sicher, aber er hat gefragt, ob er das machen muss und müssen tut er es nicht.
[/krümelkack] _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 11.09.2005, 07:48 Titel: |
|
|
OLiver hat Folgendes geschrieben: | Zitat: |
Braucht man auch nicht, OLiver... mit einer struct kannst du alles machen, was du auch mit einer Klasse tun kannst, nur dass in einer struct grundsätzlich erstmal alles public ist.
|
[krümelkack]
Sicher, aber er hat gefragt, ob er das machen muss und müssen tut er es nicht. :wink:
[/krümelkack] |
Es geht darum was du gepostet hast. Man kann den Operator in die struct nehmen ohne eine Klasse daraus zu machen. Man muss keine globale Funktion draus machen so wie du das vorgeschlagen hast. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 11.09.2005, 11:05 Titel: |
|
|
hm, aber ich meine, ne Klasse ist ja eigentlich ne Struktur mit Methoden...
Also, ich hab jetzt einfach mal "struct" durch "class" umgetauscht, und den < Operator hinzugefügt und jetzt geht es. Danke für die flinke Hilfe. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
|