Rumah >pembangunan bahagian belakang >C++ >Bilakah Vektor Beralih Daripada Tidak Kosong?

Bilakah Vektor Beralih Daripada Tidak Kosong?

Susan Sarandon
Susan Sarandonasal
2024-12-01 11:17:14991semak imbas

When Is a Moved-From Vector Not Empty?

Adakah Vektor Beralih Daripada Sentiasa Kosong?

Soalan:

Ia diketahui bahawa objek jenis perpustakaan standard boleh dialihkan daripadanya, dan sementara operasi alih boleh meninggalkan objek dialihkan daripada dalam keadaan tidak ditentukan, tiada keperluan eksplisit tidak termasuk vektor daripada ini. Walau bagaimanapun, bagaimanakah vektor yang dialihkan daripada vektor berada dalam keadaan tidak kosong?

Jawapan:

Secara amnya, vektor yang dialihkan daripada akan kosong , tetapi ia tidak selalu berlaku.

Khusus Kes:

Gelagat vektor alih-dari bergantung pada operasi yang digunakan (gerakkan pembina atau alihkan tugasan) dan pengalokasi yang dikaitkan dengan vektor.

Alihkan Pembina :

vektor(vektor&& v)

Dalam kes ini, vektor yang dialihkan daripada akan sentiasa kosong. Operasi pemindahan memerlukan kerumitan yang berterusan, memerlukan pemindahan pemilikan daripada satu vektor kepada yang lain, meninggalkan bekas kosong.

Alih Tugasan:

vektor& operator =(vektor&& v)

Terdapat tiga senario untuk pertimbangkan:

  1. Propagation Allocator Didayakan: Vector yang dialihkan daripada akan sentiasa kosong.
  2. Propagation Allocator Disabled and Equal Allocators: Tingkah laku adalah serupa dengan senario pertama, meninggalkan vektor alih-daripada kosong.
  3. Penyebaran Peruntukan Dilumpuhkan dan Pembahagian Berbeza: Vektor yang dialihkan daripada mungkin mengekalkan elemennya. Operasi penugasan pindah terpaksa menggunakan operasi pergerakan individu untuk memindahkan elemen, yang berpotensi meninggalkan elemen asal utuh.

Perlu diambil perhatian bahawa sesetengah pelaksanaan mungkin memilih untuk mengosongkan vektor alih-daripada secara eksplisit dalam ini senario, tetapi ia bukan satu keperluan.

Atas ialah kandungan terperinci Bilakah Vektor Beralih Daripada Tidak Kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn