Gibt es eine integrierte Möglichkeit, ein CArray in C++ zu sortieren?Wie sortiere ich ein CArray eines benutzerdefinierten Typs?
6
A
Antwort
9
std::sort()
sollte funktionieren:
CArray<int> arrayOfInts;
arrayOfInts.Add(7);
arrayOfInts.Add(114);
arrayOfInts.Add(3);
std::sort(arrayOfInts.GetData(), arrayOfInts.GetData()+arrayOfInts.GetSize());
Dieser den Zeiger auf das erste Element verwendet in dem Array als Start Iterator, und der Zeiger auf eine nach dem letzten Element als das letzte Iterator (sollte sowieso nie dereferenziert werden Also, alles ist gut). Sie könnten auch in einem benutzerdefinierten Prädikat übergeben, wenn das Array interessante Daten enthalten:
struct Foo
{
int val;
double priority;
};
bool FooPred(const Foo& first, const Foo& second)
{
if (first.val < second.val)
return true;
if (first.val > second.val)
return false;
return first.priority < second.priority;
}
//...
CArray<Foo> bar;
std::sort(bar.GetData(), bar.GetData()+bar.GetSize(), FooPred);
Oh - und nicht CArray
verwenden.
Verwandte Themen
- 1. Wie sortiere ich ein Array in Scala?
- 2. Wie sortiere ich ein SplFixedArray?
- 3. Wie sortiere ich ein Array von benutzerdefinierten Klassen?
- 4. Wie sortiere ich ein Array?
- 5. Wie definiere ich eine generische std :: list eines benutzerdefinierten Typs?
- 6. Wie sortiere ich ein Wörterbuch?
- 7. NHibernate: Verwenden eines benutzerdefinierten Typs als Primärschlüssel
- 8. Wie sortiere ich eine generische Liste mit einem benutzerdefinierten Vergleich?
- 9. Wie gibt man Werte eines benutzerdefinierten Typs mit NSLog aus?
- 10. Wie sortiere ich elegant Objekte in VB.net mit benutzerdefinierten Vergleich?
- 11. GraphQL Sortieren benutzerdefinierten Typs
- 12. Wie kann ich ein Objekt eines beliebigen Typs zurückgeben?
- 13. Wie sortiere ich ein NSArray alphabetisch?
- 14. Wie sortiere ich ein großes Wörterbuch
- 15. Wie sortiere ich ein Array von Zufallszahlen
- 16. Wie sortiere ich ein Array von Objekten?
- 17. Wie sortiere ich ein Array in Ruby?
- 18. Wie finde ich alle Assets eines Typs?
- 19. Fehler mit CArray
- 20. Verwenden eines benutzerdefinierten Typs in einer LINQ-Abfrage
- 21. Python: Sortiere ein Array von Wörterbüchern mit benutzerdefinierten Komparator?
- 22. Hinzufügen eines benutzerdefinierten Typs zu einem Variablentyp int?
- 23. Android-Attribut des benutzerdefinierten Typs?
- 24. Wie injiziere ich einen benutzerdefinierten UITypeEditor für alle Eigenschaften eines Closed-Source-Typs?
- 25. Wie kann ich meinen eigenen benutzerdefinierten Eigenschaftseditor für alle Instanzen eines bestimmten Typs implementieren?
- 26. Eine Eigenschaft eines benutzerdefinierten Typs im Eigenschaftenfenster (MS Visual Studio)
- 27. Konvertieren einer QVariante eines benutzerdefinierten Typs in einen QString
- 28. Wie kann ich die Ausgabe eines benutzerdefinierten Typs mit printf anpassen?
- 29. Probleme beim Serialisieren eines benutzerdefinierten Typs in ASP.NET ViewState
- 30. Wie sortiere ich einen Teil eines Arrays mit Javascript?
Beim Durchsuchen von MSDN sehe ich keine Garantie, dass CArray Daten zusammenhängend speichert. Ich erwarte es, aber ... Std :: Vector hatte zunächst diesen Fehler, und der Standard wurde korrigiert, als es entdeckt wurde. –
Siehe hier: http://msdn.microsoft.com/en-us/library/yzsdcs85(VS.80).aspx (oder einfach die Quelle in afxtempl.h lesen). Es ist nicht so, dass MFC ein Standard ist, sondern eine Sammlung von Hacks. – Shog9
Danke, habe das nicht gesehen! –