Ich habe etwas so einfaches versucht:
%Vor% Es sieht so aus, als ob Array zwei Typparameter benötigt ( type
sowie size
), also wie übertrage ich es an und von einer Funktion, ohne die Größe von vorne zu kennen?
Im Allgemeinen möchten Sie nicht wirklich Container herumreichen! Der gleiche Algorithmus, der für std::array<T, N>
funktioniert, funktioniert auch für andere Datenstrukturen, z. B. std::vector<T>
oder std::deque<T>
. Der C ++ - Ansatz besteht in diesem Fall darin, den Iterator zu übergeben und den Algorithmus [geringfügig] anzupassen:
(Ich habe nicht überprüft, dass der Algorithmus tatsächlich funktioniert, aber Sie bekommen die Idee).
Beachten Sie, dass der Algorithmus die Sequenz absichtlich vor Ort sortiert! Wenn Sie eine sortierte Kopie erstellen möchten, erstellen Sie die Kopie und sortieren Sie diese: Auf diese Weise haben Sie die Wahl, es direkt zu machen oder nicht, anstatt gezwungen zu sein, einen Ansatz zu verwenden, der übermäßigen Speicherbedarf erfordert (OK, wenn die Sequenz ist) groß wollen Sie sicherlich nicht diesen Algorithmus verwenden, aber das ist eine separate Frage).
Es funktioniert genauso wie die Übergabe des Objekts, ohne den Typ zu kennen. Sie verwenden einen Vorlagenparameter:
%Vor%IMO, Sie sollten nur die Größe als Vorlage Parameter übergeben und verwenden Sie es in der Schleife anstelle von arr.size ():
%Vor%