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:
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!