Ich verstehe vollständig diese Frage wurde viel gestellt, aber ich frage nach einer bestimmten Variante und meine Suche-foo hat aufgegeben, da ich nur Algorithmen gefunden habe, die einen anhängen existierender Vektor zu einem anderen, aber nicht von einer Funktion zurückgegeben.C++ einen Vektor an einen anderen anhängen
Ich habe diese Funktion, die alle Dateien in einem Verzeichnis aufgelistet:
vector<string> scanDir(const string& dir)
, die sich (für Unterverzeichnisse) intern nennen können.
Ich brauche eine kurze Möglichkeit, den zurückgegebenen Wert an den Vektor des Aufrufers anfügen. Ich habe in meinem Kopf so etwas wie diese (aber natürlich gibt es sich nicht :():
vector<string> fileList;
//...
fileList.append(scanDir(subdirname));
Ich fürchte, dass der Rückgabewert zu speichern und in filelist Einsetzen würde Leistung Schlechtigkeit bringt Was ich meine, das ist. :
vector<string> temp(scanDir(subdirname));
copy(temp.begin(), temp.end(), back_inserter(fileList));
Dank
PS:. von mir ich zwinge mich nicht Vektor, andere Behälter zu verwenden, die ebenso gut funktioniert und das Potential große Kopiervorgang verhindern kann, ist in Ordnung
Verwandte: http: //stackoverflow.com/questions/2208293/what-is-the-most-efficient-way-to-append-one-stdvector-to-the-end-of-another – kennytm
Wenn es um Leistung geht, ist die erste Frage immer : Hast du gemessen? Dann die trivialen, ist dies in einer engen Schleife, ist Ihre Anwendung Leistung kritisch? Wie wird das Kopieren eines Vektors mit dem Abrufen einer Liste von Dateien aus dem Dateisystem verglichen? –