QMap<int, QString> sortieren
-
GeorgGentoo
- Beiträge: 6
- Registriert: 13. Dezember 2004 23:09
- Wohnort: DE / Karlsruhe
QMap<int, QString> sortieren
Hallo,
ich habe ein relativ einfaches problem:
ein QMap<int, QString> soll sortiert werden, und zwar in meinem Fall nach den Values (alphabetisch).
Wie ist das am einfachsten zu realisieren?
Danke.
ich habe ein relativ einfaches problem:
ein QMap<int, QString> soll sortiert werden, und zwar in meinem Fall nach den Values (alphabetisch).
Wie ist das am einfachsten zu realisieren?
Danke.
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
Locutus
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
Locutus
die stl algorythmen (sort z.b.) gehen auch mit qt containern (ab 4.x) (mit qvector gehts zumindest ^^ aber ich nhem eh lieber die stl container)
aber selbst bei ner stl map und den stl algos glaub ich ned das man ne map sortiert bekommt ^^
Schau dir noch mal an was ne Map ist und ueberdenk entweder den wunsch ne map zu sortieren, oder die verwendung der map an sich als passenden container nochmal ^^
ansonsten, wenn du "Listen" hast die du bei bedarf "umsortieren" musst, kommst meist mit einem container nimmer aus. Meist nimmt man nen anspruchslosen container(list) der die eigentlichen daten haelt ... und dann ein oder mehrere container die referenzen (pointer) auf deine objecte halten und die dann beliebig sortieren kannst ....
musst halt nur aufpassen dass der container mit den wirklichen daten bis zum schluss lebt ^^
weiss ned ob es fuer den QString nen optimiertes swap gibt, aber nen std::list<std:string> container zu sortieren kann performancetechnisch schon ne katastrophe sein ^^
Ciao ...
aber selbst bei ner stl map und den stl algos glaub ich ned das man ne map sortiert bekommt ^^
Schau dir noch mal an was ne Map ist und ueberdenk entweder den wunsch ne map zu sortieren, oder die verwendung der map an sich als passenden container nochmal ^^
ansonsten, wenn du "Listen" hast die du bei bedarf "umsortieren" musst, kommst meist mit einem container nimmer aus. Meist nimmt man nen anspruchslosen container(list) der die eigentlichen daten haelt ... und dann ein oder mehrere container die referenzen (pointer) auf deine objecte halten und die dann beliebig sortieren kannst ....
musst halt nur aufpassen dass der container mit den wirklichen daten bis zum schluss lebt ^^
weiss ned ob es fuer den QString nen optimiertes swap gibt, aber nen std::list<std:string> container zu sortieren kann performancetechnisch schon ne katastrophe sein ^^
Ciao ...
Man kann viel abkuerzen ^^
QStringList anstatt std::list<std::string> ^^
Die QT widgets verwenden in ihren schnittstellen zum teil auch container ...
die actions() an nem widget zum beispiel, oder die diversen ModelImplementierungen da ...
wenn sowas zurueckbekommst, und nicht alles sofort in nen stl container kopieren willst (performance !!!) bist halt gezwungen mit den qt containern auch zu arbeiten ...
Qstringlist ist sicher auf Qstrings optimiert und verwendet bestimmt ne hochperformante swap funktion ....
so das ne qstringlist zu sortieren bestimmt um welten performanter wie nen sort auf ne std::list<std::string> aber wer macht das schon mit der stl ? ^^
fuer biblotheksentwickler gibts noch was .....
die STL gibts in mehreren impls die zueinander nicht binaercompatibel sind
sprich du hast ne schnittstelle zu ner dll wo ne stl referenz drin ist, (ala const std::string & rx ) deine exe und deine dlls sind zwar mit dem selben compiler uebersetzt, aber die exe zieht ne andere stl (include verzeichnisse !) an als die dll ... und rums !
die qt hat nur eine impl, und sobald die compiler stimmen hat man keine probs ....
ciao ...
QStringList anstatt std::list<std::string> ^^
Die QT widgets verwenden in ihren schnittstellen zum teil auch container ...
die actions() an nem widget zum beispiel, oder die diversen ModelImplementierungen da ...
wenn sowas zurueckbekommst, und nicht alles sofort in nen stl container kopieren willst (performance !!!) bist halt gezwungen mit den qt containern auch zu arbeiten ...
Qstringlist ist sicher auf Qstrings optimiert und verwendet bestimmt ne hochperformante swap funktion ....
so das ne qstringlist zu sortieren bestimmt um welten performanter wie nen sort auf ne std::list<std::string> aber wer macht das schon mit der stl ? ^^
fuer biblotheksentwickler gibts noch was .....
die STL gibts in mehreren impls die zueinander nicht binaercompatibel sind
sprich du hast ne schnittstelle zu ner dll wo ne stl referenz drin ist, (ala const std::string & rx ) deine exe und deine dlls sind zwar mit dem selben compiler uebersetzt, aber die exe zieht ne andere stl (include verzeichnisse !) an als die dll ... und rums !
die qt hat nur eine impl, und sobald die compiler stimmen hat man keine probs ....
ciao ...
-
Locutus
Danke für deine Antwort. Ich habe mittlerweile das Problem so gelöst. Der Inhalt einer Map wird automatisch sortiert und anstatt selbst noch einmal zu sortieren, loope ich den Inhalt von hinten nach vorne durch.RHBaum hat geschrieben:Schau dir noch mal an was ne Map ist und ueberdenk entweder den wunsch ne map zu sortieren, oder die verwendung der map an sich als passenden container nochmal ^^
Damit kann ich gut arbeiten. Ich verwalte mit der Map übrigens Dateien samt ihrer Größe.