Element aus Vektor zurückgeben



  • Folgender Code:

    class Foo {
       std::vector<A>	liste;
    
    public:
    	//const A& getRandomA() const { .. }
    };
    

    Ich möchte eine Methode schreiben, die jetzt random ein A Element aus dem Vektor liste zurückgibt (möglichst effizient)

    Wenn die Signatur so aussieht:
    A getRandomA() const { ... }
    Dann wird das Objekt ja per Copy Ctor zurückgeliefert, oder?

    Ich wollte das hier machen:
    const A& getRandomA() const { ... }
    Ist das ok?



  • 0. Ja, dann wird das Objekt ja per Copy Ctor zurückgeliefert
    1. Ja, das ist ok.
    2. Die Effizienz wird in vor allem von deiner random-Funktion abhängen.



  • Ok, noch was:

    Wenn die Methode so aussieht:
    const A& Foo::getRandomA() const { ... }

    Und ich schreibe:
    A a = foo.getRandomA();
    dann werden in der Zeile NUR Foo::getRandomA() und der Copy Ctor von A aufgerufen, oder?

    Also sollte ich am besten den Wert so fangen?
    const A& a = foo.getRandomA();


Anmelden zum Antworten