FileStream vector sortieren( Dedupe )

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

FileStream vector sortieren( Dedupe )

Beitrag von Bebu » Fr Apr 01, 2011 11:41 pm

Ich habe mal wieder ein kleines Problem, das sich bei der Überarbeitung vom FileSearch Modul ergeben hat. Folgendes Konstrukt:

Code: Alles auswählen

typedef boost::filesystem::path FilePath;
class FileInfo
{
  public:
   ...
   Dedupe::FilePath GetPath() const
   {
     return Path;
   }
    ...
  private:
  Dedupe::FilePath Path;
};
typedef std::vector<FileInfo> FileStream;
Ich suche nach einer Möglichkeit, den FileStream Vector zu sortieren, allerdings nach dem Pfad, der durch Getpath() erhalten wird. Ich habe es bereits mit sort() versucht, bin aber gnadenlos gescheitert. Hat jemand eine Idee?
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: FileStream vector sortieren( Dedupe )

Beitrag von cloidnerux » Sa Apr 02, 2011 12:03 am

Du schreibst dir die String-Analyse Funktion selber.
Du suchst nach "/" oder "\", bzw C:, D:, E:, etc.
C ist über D, das kann man über einfache Char vergleiche machen.
Im Endeffekt hast du dann sowas wie hier:
http://www.pr0gg3n.org/doku.php?id=algo:start
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: FileStream vector sortieren( Dedupe )

Beitrag von Bebu » Mi Apr 06, 2011 12:36 pm

Das ist mir zu aufwändig. Aber ich habe mittlerweile mit Freund Google eine Lösung gefunden:

Code: Alles auswählen

public:
bool operator < (const FileInfo & rhs ) const { return Path < rhs.Path; }
innerhalb von FileInfo hat mein Problem auch sehr gut gelöst.
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: FileStream vector sortieren( Dedupe )

Beitrag von Xin » Mi Apr 06, 2011 12:48 pm

Was ja die von cloidnerux vorgeschlagene Methode ist, nur dass der Vergleich über std::string schon implementiert ist. :)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: FileStream vector sortieren( Dedupe )

Beitrag von Bebu » Mi Apr 06, 2011 6:45 pm

Das mag sein. Ich muss ehrlich zugeben, dass ich mich nicht schlau gemacht habe, mit welcher Sortiermethode std::sort() genau arbeitet. Und es ist durchaus möglich, das eine eigene Implementierung auch schnell wäre. ABER ich will momentan den Code so kompakt wie möglich halten und ich bin der Meinung das man Feintuning betreiben sollte, wenn das wesentliche funktioniert, statt sich an den Details aufzuhalten und dabei das Ziel aus den Augen zu verlieren. Rom ist auch nicht an einem Tag erbaut worden ;)
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Antworten