vector sortieren



  • Hi,
    ich hab folgenden Vector den ich alphabetisch sortieren möchte:

    struct DAT
    {
      std::string t1;
      std::string t2;
      std::string t3;
    }
    std::vector<DAT> m_Daten;
    

    Diesen Vector möchte ich nach t1 sortieren, ich habe aber keine Ahnung wie ich das machen muss. Könnt ihr mir da weiterhelfen?

    Gruß
    Peter



  • struct Sort_DAT_t1
    {
    	bool operator() (DAT const& d1, DAT const& d2) {return d1.t1 < d2.t1;}
    };
    
    std::sort(m_Daten.begin(), m_Daten.end(), Sort_DAT_t1());
    


  • MFK schrieb:

    struct Sort_DAT_t1
    {
    	bool operator() (DAT const& d1, DAT const& d2) {return d1.t1 < d2.t1;}
    };
    
    std::sort(m_Daten.begin(), m_Daten.end(), Sort_DAT_t1());
    

    Vielen Dank für deine Antwort, leider funktioniert das noch nicht ganz, ich erhalte folgende Fehlermeldung:

    error C2678: Binärer Operator '<': Es konnte kein Operator gefunden werden, der einen linksseitigen Operator vom Typ 'const std::string' akzeptiert (oder keine geeignete Konvertierung möglich)



  • Oder du implementierst operator < (oder operator >) und lässt dann sortieren.

    Gruß



  • Frage3432 schrieb:

    error C2678: Binärer Operator '<': Es konnte kein Operator gefunden werden, der einen linksseitigen Operator vom Typ 'const std::string' akzeptiert (oder keine geeignete Konvertierung möglich)

    #include <string> vergessen? Zeig doch mal den Code.



  • MFK schrieb:

    Frage3432 schrieb:

    error C2678: Binärer Operator '<': Es konnte kein Operator gefunden werden, der einen linksseitigen Operator vom Typ 'const std::string' akzeptiert (oder keine geeignete Konvertierung möglich)

    #include <string> vergessen? Zeig doch mal den Code.

    Stimmt, hatte ich vergessen.
    Jetzt bringt er mir aber das:

    error C2664: 'bool Sort_DAT_t1::operator ()(const DAT &,const DAT &)': Konvertierung des Parameters 1 von 'std::allocator<_Ty>::value_type' in 'const DAT &' nicht möglich



  • MFK schrieb:

    Zeig doch mal den Code.



  • Sorry, hatte mich vertipp.
    Ich habe

    std::vector<DAT*> m_Daten;

    anstatt

    std::vector<DAT> m_Daten;



  • Was ich noch vergessen hatte, das Problem ist gelöst, vielen Dank für die schnelle Hilfe.


Anmelden zum Antworten