Grosses Objekt zurueckgeben
-
Hallo,
ich habe eine Klasse Foo, bei der das Kopieren recht komplex ist, sprich Copy Ctor = langsam.
Ich muss in einer Methode einen Vektor von Foo zurueckgeben:
class Bar { public: vector<Foo> computeStuff(); };Meine Frage ist nun: Wie mach ich das am effizientesten. Vom Design her waere das am schoensten:
- Rueckgabe per lokaler Variable und Kopie:
vector<Foo> Bar::computeStuff() { vector<Foo> ret; .. ret fuellen return ret; }Oder ware es vielleicht das effizienter:
2) Eine Membervariable anlegen und dann eine konstante Referenz darauf liefern:class Bar { vector<Foo> m_Foos; const vector<Foo>& Bar::computeStuff() { m_Foos.clear(); .. m_Foos fuellen return m_Foos; } };Was denkt ihr ist effizienter/besser? (PS: Ich benutze Linux und g++)
-