ホームページ > バックエンド開発 > C++ > 移動元ベクトルが空でない場合は?

移動元ベクトルが空でない場合は?

Susan Sarandon
リリース: 2024-12-01 11:17:14
オリジナル
990 人が閲覧しました

When Is a Moved-From Vector Not Empty?

移動元ベクトルは常に空ですか?

質問:

それは知られています標準ライブラリ タイプのオブジェクトは移動元にできますが、移動操作では移動元のオブジェクトが未指定の状態のままになる可能性があります。これにベクトルを除く明示的な要件はありません。しかし、移動元ベクトルが空でない状態になることはどのようにして可能でしょうか?

答え:

一般に、移動元ベクトルは空になります。ただし、常にそうとは限りません。

特定ケース:

移動元ベクトルの動作は、使用される操作 (移動コンストラクターまたは移動代入) と、ベクトルに関連付けられたアロケーターによって異なります。

移動コンストラクター:

vector(vector&& v)

この場合、移動元ベクトルは常に空になります。移動操作は一定の複雑さを必要とし、あるベクトルから別のベクトルに所有権を移す必要があり、前者を空のままにします。

移動割り当て:

vector& 演算子=(vector&& v)

次の 3 つのシナリオがあります。以下を考慮してください:

  1. アロケータ伝播が有効です: 移動元ベクトルは常に空になります。
  2. アロケータ伝播が無効で等しいアロケータ:動作は最初のシナリオと似ていますが、移動元ベクトルはそのまま残ります。 empty.
  3. アロケータ伝播が無効であり、異なるアロケータ: 移動元のベクトルはその要素を保持する可能性があります。移動代入操作では、要素を転送するために個別の移動操作を使用する必要があり、元の要素がそのまま残される可能性があります。

実装によっては、この中の移動元ベクトルを明示的にクリアすることを選択する場合があることに注意してください。シナリオですが、必須ではありません。

以上が移動元ベクトルが空でない場合は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート