Was ist der Unterschied zwischen std::uninitialized_copy
und std::copy
und wann sollte ich welche verwenden?Unterschied zwischen std :: uninitialized_copy & std :: copy?
Antwort
Nehmen wir an, Sie haben etwas Speicher auf dem Heap über malloc
zugewiesen und haben einen Zeiger T* p
zu ihm. Sie haben am Ende nicht initialisierten Speicher, weil alle malloc
macht einen Speicherort der Größe, die Sie als zugewiesen (new
auf der anderen Seite tatsächlich Objekte erstellt und damit die zugewiesene Region initialisierten Speicher macht markiert). Da die Lage von p
nicht starten Speicher kein gültiges Objekt vom Typ T
dort sitzen haben, können Sie diese nicht
T a;
*p = a;
da kein Objekt vom Typ ist T
bei p
auf den Zuweisungsoperator aufzurufen. Stattdessen haben Sie ein Konstrukt, ein Objekt vom Typ T
am Ort p
mit placement new
:
T a;
new (p) T{a};
std::uninitialized_copy
einfach implementiert die Palette Version des obigen Code-Schnipsel, wenn sie mit einem Bereich zu tun, die Sie nicht initialisierten Speicher kopieren Sie wollen .
- 1. Ressourcenverlust in Stroustrup Beispiel mit Std :: uninitialized_copy?
- 2. std :: copy std :: cout für std :: pair
- 3. Unterschied zwischen Std: String und Std :: String
- 4. Unterschied zwischen std :: Suche und std :: find_first_of
- 5. Unterschied zwischen std :: regex_match & std :: regex_search?
- 6. Unterschied zwischen std :: set und std :: priority_queue
- 7. Sind std :: move und std :: copy identisch?
- 8. Unterschied zwischen std :: exception und "..."
- 9. Behandelt std :: copy überlappende Bereiche?
- 10. Unterschied: std :: runtime_error vs std :: exception()
- 11. Was ist der Unterschied zwischen std :: cout und std :: wcout?
- 12. Was ist der Unterschied zwischen std :: set und std :: map
- 13. Was ist der Unterschied zwischen std :: partial_sum und std :: inclusive_scan?
- 14. Was ist der Unterschied zwischen std :: function und std :: mem_fn
- 15. Unterschied zwischen Vektor :: begin() und std :: begin()
- 16. Unterschied zwischen std :: end (myVector) und myVector.end()
- 17. Unterschied zwischen std :: result_of und declltype
- 18. Unterschied in using namespace (std :: vs :: std: :)
- 19. Was ist der Unterschied zwischen std :: tie und std :: make_tuple mit std :: ref-Argumenten?
- 20. Unterschied zwischen std :: mutex lock function und std :: lock_guard <std::mutex>?
- 21. std :: copy kopiert ein zusätzliches Wagenrücklaufzeichen
- 22. std :: mit std :: make_pair
- 23. Unterschiede zwischen std :: is_integer und std :: is_integral?
- 24. std :: mem_fun vs std :: mem_fn
- 25. Unterschied zwischen std :: is_signed <T> und std :: numeric_limits <T> :: is_signed?
- 26. Was ist der Unterschied zwischen std :: string :: c_str und std :: string :: data?
- 27. Was ist der Unterschied zwischen std :: string und std :: basic_string? Und warum werden beide benötigt?
- 28. Unterschied zwischen gcc Kompilieroptionen Std = C++ 1y und Std = C++ 14
- 29. Was ist der Unterschied zwischen std :: to_string, boost :: to_string und boost :: lexical_cast <std::string>?
- 30. Was ist der Grund für den Unterschied im Zerstörungsverhalten zwischen std :: unique_ptr und std :: shared_ptr?
Ihre Antwort nagelt es, gelöscht meins, +1. – vsoftco
Ist 'uninitialized_copy' genau gleichbedeutend mit' memcpy'? –
@MattMcNabb Das wäre nur wahr, wenn sie trivial kopierbar sind, AFAIK. – Pradhan