Heim > Backend-Entwicklung > C++ > Wie kann ein verschobener Container in C 0x sicher wiederverwendet werden?

Wie kann ein verschobener Container in C 0x sicher wiederverwendet werden?

DDD
Freigeben: 2024-12-02 16:24:12
Original
667 Leute haben es durchsucht

How to Safely Reuse a Moved Container in C  0x?

Wiederverwendung eines verschobenen Containers: Erkundung des C 0x-Standardentwurfs

Mit der vorliegenden Frage soll die richtige Methode zur Wiederverwendung eines verschobenen Containers geklärt werden in C. Gemäß dem C 0x-Standardentwurf erlaubt ein Objekt in einem „gültigen, aber nicht spezifizierten Zustand“ Operationen, die keine Vorbedingungen erfordern, es sei denn, diese Vorbedingungen werden zuerst überprüft.

Beachten Sie den bereitgestellten Codeausschnitt:

std::vector<int> container;
container.push_back(1);
auto container2 = std::move(container);

// ver1: Do nothing
//container2.clear(); // ver2: "Reset"
container = std::vector<int>() // ver3: Reinitialize
Nach dem Login kopieren

Der Vektorcontainer wird in Container2 verschoben, sodass der Container in einem nicht spezifizierten Zustand verbleibt. Laut Norm erlaubt dieser Zustand den Betrieb ohne Vorbedingungen. Daher wird der Aufruf von „clear“ für Container2 (Version 2) ihn in einen bekannten Zustand zurückversetzen.

Alternativ führt auch die Neuinitialisierung des Containers mit Version 3 zum gewünschten Ergebnis. Diese Methode ist etwas umständlicher, ermöglicht jedoch eine potenzielle Optimierung. Allerdings kann es auch zu Fehlern kommen.

Daher besteht die richtige Methode zur Wiederverwendung eines verschobenen Containers darin, ihn entweder zu löschen oder neu zu initialisieren. Version 2 wird bevorzugt, da sie den Container explizit auf einen bekannten Zustand zurücksetzt und potenzielle Fallstricke im Zusammenhang mit Version 3 vermeidet.

Das obige ist der detaillierte Inhalt vonWie kann ein verschobener Container in C 0x sicher wiederverwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage