Ich habe einen Std :: Vektor, den ich nach ausgewählten Algorithmen für bestimmte Operationen sortieren muss, aber den Rest der Zeit seinen ursprünglichen Zustand beibehalten muss (z. B. Artikel geordnet nach, als sie eingegeben wurden).Was ist eine gute Möglichkeit, einen Vektor * vorübergehend * zu sortieren?
Offensichtlich kann ich std :: copy verwenden, um einen temporären Vektor zu erstellen und das zu sortieren, aber ich frage mich, ob es einen besseren Weg gibt, möglicherweise durch Zeitstempeln der eingegebenen Elemente.
Prost
Warum? Sortierung ist "O (N log N)", ganz zu schweigen vom konstanten Faktor; Kopieren ist direkt 'N * sizeof (T) 'Speicher schreibt unter der Annahme von POD-Elementen. Außerdem könnte man die Kopierzeit vom Benchmarking leicht ausschließen. – kennytm
Unter der Annahme von POD-Elementen ist das Kopieren eine konstante Zeit (Hinweis: think * memcpy *) und ziemlich schnell. –
Kopieren ist nicht konstante Zeit, @Stingray. Ist Zustand). –