Heim > Backend-Entwicklung > C++ > Wann ist ein verschobener Vektor nicht leer?

Wann ist ein verschobener Vektor nicht leer?

Susan Sarandon
Freigeben: 2024-12-01 11:17:14
Original
990 Leute haben es durchsucht

When Is a Moved-From Vector Not Empty?

Ist ein verschobener Vektor immer leer?

Frage:

Es ist bekannt dass Objekte von Standardbibliothekstypen verschoben werden können, und obwohl Verschiebungsvorgänge möglicherweise verschobene Objekte in einem nicht spezifizierten Zustand belassen, gibt es keine expliziten Anforderungen, die den Ausschluss ausschließen Vektor daraus. Wie ist es jedoch möglich, dass verschobene Vektoren in einem nicht leeren Zustand sind?

Antwort:

Im Allgemeinen ist ein verschobener Vektor leer , aber das ist nicht immer der Fall.

Sonderfälle:

Die Das Verhalten eines verschobenen Vektors hängt von der verwendeten Operation (Verschiebungskonstruktor oder Verschiebungszuweisung) und dem mit dem Vektor verbundenen Allokator ab.

Verschiebungskonstruktor:

< pre>vector(vector&& v)

In diesem Fall ist der verschobene Vektor immer leer. Der Verschiebungsvorgang erfordert eine konstante Komplexität und erfordert die Übertragung des Eigentums von einem Vektor auf einen anderen, wobei ersterer leer bleibt.

Zuweisung verschieben:

vector& Operator =(vector&& v)

Es gibt drei Szenarien Bedenken Sie:

  1. Allocator-Propagierung aktiviert: Der verschobene Vektor ist immer leer.
  2. Allocator-Propagierung deaktiviert und gleiche Allokatoren: Das Verhalten ähnelt dem ersten Szenario, der Ausgangsvektor bleibt erhalten leer.
  3. Allokatorweitergabe deaktiviert und verschiedene Allokatoren: Der verschobene Vektor kann seine Elemente behalten. Die Verschiebungszuweisungsoperation ist gezwungen, einzelne Verschiebungsoperationen zum Übertragen von Elementen zu verwenden, wodurch möglicherweise die ursprünglichen Elemente intakt bleiben.

Es ist zu beachten, dass einige Implementierungen sich dafür entscheiden können, den verschobenen Vektor dabei explizit zu löschen Szenario, aber es ist keine Voraussetzung.

Das obige ist der detaillierte Inhalt vonWann ist ein verschobener Vektor nicht leer?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage