Ich versuche, eine Klassenmethode zu erstellen, die einen std :: vector zurückgibt, und bin ein wenig verwirrt über die beste Methode, dies zu tun.
Der Ansatz, den ich verwendet habe, ist die folgende Methode zu definieren:
%Vor%und in der Methode, einen neuen std :: vector zuweisen, den ich mit Daten fülle. Ich gebe einen Zeiger darauf zurück, dh.
%Vor%(_ itMap ist ein klassenspezifischer Iterator).
In meiner main.cpp habe ich folgendes gemacht:
%Vor%Ich weiß, dass ich mit diesem Ansatz einen freien Zeiger bekomme, es sei denn, ich lösche den Zeiger im main.cpp-Code, also ist es schon ein bisschen "gefährlich". Was ist der beste Weg, um einen neuen std :: vector von einer Klassenmethode zurückzugeben?
Danke Leute Pete
Der beste Weg ist, nach Wert zurückzugeben:
%Vor%Dann würden Sie die Funktion wie folgt verwenden:
%Vor%Der Compiler wird wahrscheinlich RVO verwenden und keine Kopien ausführen. Wenn Sie C ++ 11 verwenden, stellt die Verschieben-Semantik sicher, dass keine Kopien ausgeführt werden.