Rumah > Artikel > pembangunan bahagian belakang > Adakah tugasan gerak sendiri berfungsi dengan `std::vector` dalam Pustaka Standard C?
Tugasan Pergerakan Kendiri dalam Perpustakaan Standard C
Dalam C 11, piawaian menyediakan jaminan tertentu mengenai tugasan bergerak sendiri, terutamanya dalam standard perpustakaan. Mari kita siasat apakah jaminan tersebut.
Menurut Seksyen 17.6.4.9 piawai C 11, di bawah topik "Argumen Fungsi", dinyatakan bahawa jika argumen fungsi terikat pada parameter rujukan nilai, pelaksanaan boleh menganggap bahawa rujukan ini adalah eksklusif untuk hujah.
Ini membayangkan bahawa dalam pelaksanaan std::vector
Apa yang mungkin berlaku ialah v akan diberikan tanpa sumber (dengan kapasiti sifar). Tindakan ini akan menjadi larangan jika v sudah mempunyai kapasiti sifar.
Kemas kini:
Draf kerja terkini (N4618) menawarkan definisi yang lebih tepat bagi Keperluan MoveAssignable. Ia menyatakan bahawa ungkapan t = rv (di mana rv ialah nilai r) memerlukan t hanya sepadan dengan nilai rv sebelum tugasan jika ia tidak merujuk kepada objek yang sama. Walau apa pun, keadaan rv menjadi tidak ditentukan selepas tugasan. Nota tambahan memberikan penjelasan lanjut:
"rv mesti masih memenuhi keperluan komponen perpustakaan yang menggunakannya, sama ada t dan rv merujuk kepada objek yang sama atau tidak."
Atas ialah kandungan terperinci Adakah tugasan gerak sendiri berfungsi dengan `std::vector` dalam Pustaka Standard C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!