Wie übergibt man ein std :: array?

7

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?

    
sircodesalot 28.08.2013, 01:53
quelle

3 Antworten

20

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:

%Vor%

(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).

    
Dietmar Kühl 28.08.2013, 02:08
quelle
10

Es funktioniert genauso wie die Übergabe des Objekts, ohne den Typ zu kennen. Sie verwenden einen Vorlagenparameter:

%Vor%     
Nicol Bolas 28.08.2013 01:56
quelle
3

IMO, Sie sollten nur die Größe als Vorlage Parameter übergeben und verwenden Sie es in der Schleife anstelle von arr.size ():

%Vor%     
user1551592 28.08.2013 01:58
quelle

Tags und Links