2016-10-20 7 views
1

Ich habe Codierung in C++ vor kurzem begonnen und jetzt mit Strukturen ich tun .... und hier ist mein ProblemPassing Strukturelemente zu einer Funktion

das ist mein Grund Struktur.

struct myStruct 
{ 
    string A; 
    int B; 
} myStruct[100]; 

Ich möchte, um die Zeichenfolge passieren in ‚myStruct‘ (für alle Elemente in der Anordnung der Struktur) in eine Sortierfunktion (Ich verwende die eingebaute Sortierfunktion). Wie mache ich das? Ich möchte alle Strings sortiert ... Ich habe mein Bestes versucht, mein Problem zu erklären. Ich hoffe, dass Sie es bekommen und mir helfen, mit ihm ..

+0

Sie die Saiten oder das Array durch die Zeichenfolge von structs sortieren wollen? – krzaq

+0

Sie können Google zuerst versuchen. Ich glaube, dass diese Erklärung mit Beispielen genug ist http://www.cplusplus.com/articles/NhA0RXSz/. – honzakuzel1989

Antwort

3

Wenn ich richtig verstehe, und Sie möchten Ihre Array sortieren, basierend auf der String A in jeder Struktur, müssen Sie std::sort informieren, wie Ihre structs zu vergleichen.

Eine Möglichkeit ist, operator< für Ihren benutzerdefinierten Typ hinzuzufügen.

bool operator< (myStruct const& lhs, myStruct const& rhs) { 
    return lhs.A < rhs.A; 
} 

ist ein weiterer Weg std::sort eine Vergleichsfunktion Objekt zu übergeben:

std::sort(std::begin(myArray), std::end(myArray), 
      [](myStruct const& lhs, myStruct const& rhs) 
      { return lhs.A < rhs.A; }); 
+0

Ich denke, es ist eine gute Idee zu erwähnen, dass die Übergabe eines Funktionszeigers wahrscheinlich langsamer ist als die Übergabe eines Lambda (oder eines Funktionsobjekts, was ein Lambda ist). – DeiDei