mehrere Werte aus einer Funktion zurückgeben
-
Angenommen ich habe eine Funktion, in der eine Reihe von strings erzeugt werden. Wie würde man diese am besten zurückgeben?
std::vectorstd::string** func()
std::vectorstd::string&& func()
std::vectorstd::string func()Letztere Möglichkeit ist natürlich am schönsten, aber ich bin mir nicht sicher, ob dort nicht unnötig rumkopiert wird?
Boo
-
du bist dir im klaren, was & und * bedeuten? wenn ja: müsstest du die frage selbst beantworten können. wenn nein => faq!
-
1. und 2. methode sind schwachsinn, 3. ist annehmbar,wenn auch nicht unbedingt perfekt.
wenn du die funktion nur einmnal braucht, oder wenn du den alten wert der strings im vector eh nicht mehr brauchen würdest,wenn du die funktion ein weiteres mal aufrufst, dann gigne auch sowas:
std::vector<std::string>& func(){ static std::vector<std::string> stringContainer; //... return stringContainer; }
die möglichkeit ist aber wirklich nur dann zu gebrauchen, wenn du akzeptieren kannst, dass die alte referenz bei mehrmaligem aufruf der funktion auch verändert wird.
ansonsten nimmst du besser die 3. von dir vorgeschlagene möglichkeit.