Ich habe ein paar Posts darüber gelesen, wie man einen Vektor aus einer Methode zurückgibt:
und ich bin immer noch verwirrt darüber, wie man einen Vektor in VS2013 richtig weitergibt und was die Unterschiede zwischen den folgenden Methoden in diesem Code sind (die Fragen sind in den Kommentaren markiert):
%Vor%Ich bin mir also nicht sicher, ob // 1 eine explizite Form von // 2 ist, nicht sicher, ob 3 funktioniert. Was sind die Unterschiede zwischen 4 und 5? Wie kann man es testen, wenn RVO für Vektoren in VS2013 funktioniert?
Das ist einfach hässlich, du brauchst immer noch eine Kopie und du machst deine Schnittstelle zu komplex.
%Vor% Funktional gleich, aber Sie möchten wahrscheinlich 3 anzeigen, dass getVect
den Klassenstatus nicht ändert, damit const
Semantik korrekt angewendet werden kann.
Es erscheint sehr unwahrscheinlich, dass Sie dies wollen, nachdem Sie GetVect
aufgerufen haben. Das interne vect
enthält keine Elemente mehr.
Dies sollte am Ende dasselbe wie 4 sein, Sie rufen einfach den move -Konstruktor des Rückgabeobjekts explizit auf.
Für die Leistung, die Sie eigentlich wollen, ist dies:
%Vor%Auf diese Weise können Sie das Objekt lesen, ohne es kopieren zu müssen. Wenn Sie in den zurückgegebenen Vektor schreiben möchten, erstellen Sie explizit eine Kopie. Weitere Details finden Sie in diese Frage