Vermeiden Sie das Kopieren von Objekten mit der Anweisung "return"

Ich habe eine sehr grundlegende Frage in C ++. Wie vermeide ich das Kopieren bei der Rücksendung eines Objekts?

Hier ist ein Beispiel :

<code>std::vector<unsigned int> test(const unsigned int n)
{
    std::vector<unsigned int> x;
    for (unsigned int i = 0; i < n; ++i) {
        x.push_back(i);
    }
    return x;
}
</code>

Soweit ich weiß, wie C ++ funktioniert, werden mit dieser Funktion zwei Vektoren erstellt: der lokale (x) und die Kopie von x, die zurückgegeben wird. Gibt es eine Möglichkeit, die Kopie zu vermeiden? (und ich möchte keinen Zeiger auf ein Objekt zurückgeben, sondern das Objekt selbst)

Wie würde die Syntax dieser Funktion lauten, wenn man "Bewegungssemantik" verwendet (wie in den Kommentaren angegeben)?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage