Durchläuft den Vektor mit einem Iterator und kopiert die beste Kopiermethode in eine Liste. Irgendwelche Empfehlungen?Der beste Weg, um einen Vektor in eine Liste in STL zu kopieren?
Antwort
Warum sollten Sie iterieren und nicht den Standard-Kopieralgorithmus verwenden?
std::copy(vector.begin(), vector.end(), std::back_inserter(list));
Sie können versuchen, heikler Dinge aus dem <algorithm>
Header zu verwenden, zum Beispiel for_each
oder copy
... aber sie würden auf dasselbe hinaus, meiner Meinung nach.
for_each wird gleich sein. Die Kopie kann überladen werden, um in Abhängigkeit von den bereitgestellten Iteratoren eine viel effizientere Kopiermechanik bereitzustellen, und ist im Allgemeinen der bevorzugte Mechanismus. – workmad3
Wenn Sie eine neue Liste zu machen, können Sie die Vorteile von einem Konstruktor übernehmen, die Iteratoren beginnen und Ende nimmt:
std::list<SomeType> myList(v.begin(), v.end());
Kasprzol Antwort ist perfekt, wenn Sie eine bestehende Liste haben Sie anhängen möchten.
Ich mag diesen Vorschlag für den Aufbau einer neuen Liste.
Wenn Sie jedoch an eine vorhandene Liste anfügen, kann das Folgende für kleine Datensätze optimal sein. Mit "optimal" meine ich, dass es am einfachsten ist, sich daran zu erinnern, wie man es am besten versteht und am leichtesten versteht. (Dies sind subjektive Aussagen, ich bin sicher, es hängt davon ab, wie Ihr Gehirn verdrahtet ist.)
for (unsigned i=0; i<v.size(); i++) myList.push_back(v[i]);
Iteratoren auf Vektoren können unter Verwendung von übermäßig pedantisch in vielen Fällen. Einfache Indexierung funktioniert normalerweise gut.
Ein anderer Thread Adressen Iteratoren vs. Indizes (here). In diesem Thread bevorzugte die genommene Antwort grundsätzlich Iteratoren, weil sie generischer sind. Aber wenn Vektoren der am häufigsten verwendete Containertyp sind, denke ich, dass es sinnvoll ist, diese Art von einfachem Algorithmus zu spezialisieren.
list.assign(vector.begin(), vector.end());
Dies ist hilfreich, aber Sie sollten dieser Antwort möglicherweise einen Nicht-Code hinzufügen, um ein potenzielles VLQ-Flag zu vermeiden. –
- 1. Was ist der beste Weg, um eine Liste zu kopieren?
- 2. Der beste Weg, um eine Liste in Java zu pflegen
- 3. Was ist der beste Weg, um eine C++ - Struktur zu kopieren, die STL-Member wie Vektor enthält?
- 4. Wie vektor kopieren, um in STL in einer würdevollen Weise zu kopieren
- 5. Der effizienteste Weg, um einen Vektor in Matlab zu wiederholen
- 6. Der beste Weg, um die Liste der Doubles zu gruppieren, um einen bestimmten Wert zu addieren
- 7. Der beste Weg, um einen WYSIWYG in Flex zu machen?
- 8. Der beste Weg, um einen 2D Tensor mit einem Vektor in TensorFlow zu glätten?
- 9. Der beste Weg, um einen Dateityp in PHP zu erkennen
- 10. Der beste Weg, um eine URL in Vim zu öffnen
- 11. Der beste Weg, um eine Schnittstelle in C++ zu durchlaufen?
- 12. Was ist der beste Weg, um eine Karte in Kotlin zu kopieren?
- 13. Der beste Weg, um Erweiterungsmethoden zu implementieren
- 14. Der beste Weg, um eine Dateigröße in Bytes zu speichern?
- 15. Was ist der beste Weg in Perl Dateien in eine noch zu erstellende Verzeichnisstruktur zu kopieren?
- 16. Der beste Weg, um eine RESTful Toggle-Aktion zu implementieren?
- 17. beste Weg, um einen Mitternachtsdatetime in C#
- 18. Was ist der beste Weg, um einen InputStream zu überwachen?
- 19. Der beste Weg, um einen Benutzer eindeutig zu identifizieren
- 20. Der beste Weg, um eine Liste von Strings in Python zu randomisieren
- 21. Der beste Weg, um Iterator in Javascript
- 22. Der beste Weg, um einen Download zu starten?
- 23. Der beste Weg, um IronPython zu erkennen
- 24. Was ist der beste Weg, um eine Liste von "einzigartigen" Objekten in Java zu erstellen
- 25. Der beste Weg, um "Pfeil" in div
- 26. Eine Frage zu Element in STL Liste
- 27. Wie kopiert man eine bestimmte Anzahl von Zeichen aus einer Datei in einen Vektor der STL-Weg?
- 28. Der beste Weg, um eine ganze Zahl in einen Monatsnamen in C# zu verwandeln?
- 29. Was ist der beste Weg, um einen Datenrahmen zu umgehen?
- 30. Der beste Weg, um eine kleine Schlüssel-Wert-Liste in Redis zu speichern
Sollte std :: copy anstelle von stl :: copy sein, aber ansonsten ist dies die bevorzugte Methode, wenn Iteratoren zum Kopieren verwendet werden. – workmad3