2017-03-23 3 views
-4

Ich versuche, die Reihenfolge eines Satzes in einer bestimmten Konfiguration zu ändern:gesetzt als Mitglied Attribut

ein customObject hat die folgende Form

class CustomObject{ 
public: 

... 
std::set<CustomObject*> container; 

}; 

und ich möchte dauerhaft Eigentum halten, zu sagen, dass der Behälter in der folgenden Reihenfolge sortiert:

elt1 & elt2 sind Elemente des Behälters, und elt1 < elt2 iff elt1.container.size()<elt2.container.size()

Ich weiß, ich

struct cmpStruct { 
    bool operator() (int const & lhs, int const & rhs) const 
    { 
    return lhs > rhs; 
    } 
}; 

wie Is the std::set iteration order always ascending according to the C++ specification?

Aber ich weiß nicht, verwenden, wie der „diesen“ innerhalb der Struktur

Dank Zugang zu tun viel für Ihre Hilfe

+1

was 'this' möchten Sie zugreifen? Ich denke, Sie wollen zwei 'CustomObject' anstelle von' int's vergleichen. Sobald Sie die Signatur Ihres 'cmpStruct' ändern, denke ich, dass Sie die Antwort selbst wissen werden (tbh ich verstehe die Frage überhaupt nicht) – user463035818

+0

Wie vergleicht man zwei' int's mit Ihrer Klasse 'CustomObject'? –

Antwort

0

So ähnlich?

class CustomObject{ 
public: 
    CustomObject(int _x) : x(_x) {}; 
    int x; 
}; 

struct cmpStruct { 
    bool operator() (const CustomObject* lhs, const CustomObject* rhs) const 
    { 
     return lhs->x > rhs->x; 
    } 
}; 

int main(int argc, char* argv[]) 
{ 
    std::set<CustomObject*, cmpStruct> container; 

    CustomObject a(10); 
    CustomObject b(20); 
    CustomObject c(5); 

    container.insert(&a); 
    container.insert(&b); 
    container.insert(&c); 

    for(auto co : container) { 
     std::cout << co->x << std::endl; 
    } 
    return 0; 
} 

Ausgang:

20 
10 
5 
+0

Ich weiß, dass es schwierig ist, die Frage zu verstehen, aber wie ich verstanden habe, hat OP einen Container mit 'CustomObject's und möchte sie nach ihrer' Container 's Größe sortieren (zB' lhs-> container.size()> rhs -> container.size() ') – user463035818

+0

Ich bin mir nicht sicher, was die Zeile CustomObject (int _x): x (_x) {}; tut aber ja, tobi303 drückte es richtig aus, ich möchte nach container.size() sortieren. Ihre Antwort ist richtig, wenn wir diese kleine Änderung hinzufügen, dank Ihnen beiden –

Verwandte Themen