Wieso funktioniert std::reverse() einfach so?
-
Guten Abend!
Ich habe einen vector v vom typ einer von mir erstellten struct:
struct LimitSegment { double s1, s2; boost::optional<double> left; boost::optional<double> right LimitSegment(double as1, double as2, double aleft= -1.0, double aright= -1.0); }; std::vector<LimitSegment> segments; // segments füllen reverse(segments.begin(), segments.end());Ich fülle z.B. den vector segments mit 3 LimitSegment und der vector hat folgenden Inhalt nach dem Füllen: (111, 160), (60, 111), (0, 60). In den Klammern stehen die Werte s1 und s2 der LimitSegment struct.
Nachdem nun reverse() ausgeführt wurde, hat der vector folgenden Inhalt:
(0, 60), (60, 111), (111, 160).
Der LimitSegment wurden genau so sortiert, wie ich es haben wollte (aufsteigend nach s1). Wie kann das sein? Woher weiß denn std::reverse(), wie ich die LimitSegment sortiert haben will? Ich habe doch nirgends einen operator< definiert.
-
reverse sortiert nicht, reverse kehrt einfach die Reihenfolge um.
Das letzte Element wird das erste, das vorletzte das zweite,...
-
Reverse hat doch einfach nur - wie der Name schon sagt - die Elemente so vertauscht dass sie in um gekehrter REihenfolge dastehen.

-
lol, stimmt! Sorry
