Rumah >pembangunan bahagian belakang >C++ >Apakah Keadaan Vektor Beralih Daripada dalam C ?

Apakah Keadaan Vektor Beralih Daripada dalam C ?

Patricia Arquette
Patricia Arquetteasal
2024-11-23 21:42:15799semak imbas

What is the State of a Moved-From Vector in C  ?

Keadaan Kosong Pindah-Dari Vektor

Dalam jenis perpustakaan standard C, objek yang dialihkan daripada biasanya diletakkan dalam keadaan yang sah tetapi tidak ditentukan . Walau bagaimanapun, terdapat rasa ingin tahu sama ada vektor secara eksplisit berada di bawah peraturan ini.

Gelagat Pembina Alih

Untuk pembina bergerak vektor, vektor alih-daripada sentiasa kosong disebabkan oleh keperluan kerumitan yang berterusan. Pembina mencuri sumber daripada vektor sumber untuk membina tika baharu, meninggalkan vektor asal dalam keadaan kosong.

Gelagat Operator Tugasan Alih

Tingkah laku pergerakan vektor pengendali tugasan lebih bernuansa dan bergantung kepada pengalokasi:

Kes 1: Sebarkan Pindahkan Tugasan = Benar

Dalam kes ini, vektor yang dialihkan daripada akan sentiasa kosong. Pengendali tugasan memusnahkan elemen, memperuntukkan kapasiti, memindahkan pemilikan penimbal memori daripada vektor sumber dan mengalihkan pengagih. Ini meninggalkan vektor asal dalam keadaan kosong.

Kes 2: Propagate Move Assignment = Palsu, Pembahagian Sama

Sama seperti Kes 1, vektor yang dialihkan daripada ialah dikosongkan oleh pengendali tugasan pindah. Pengagih tidak dialihkan dan pembezaan kes berlaku secara dinamik.

Kes 3: Penyerahan Pemindahan Penyerahan = Pembahagian Salah dan Tidak Sama

Kes yang paling rumit melibatkan pengagih yang berbeza. Di sini, tugasan alih tidak boleh mengalihkan sumber atau menetapkan pengagih. Sebaliknya, ia memindahkan elemen individu daripada vektor sumber ke vektor destinasi. Bergantung pada keupayaan pengagih dan keperluan pembinaan elemen, vektor yang dialihkan mungkin tidak semestinya kosong. Walau bagaimanapun, sesetengah pelaksanaan boleh memilih untuk memanggil clear() secara eksplisit pada vektor sumber, meninggalkannya kosong.

Atas ialah kandungan terperinci Apakah Keadaan Vektor Beralih Daripada dalam C ?. 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