Rumah >pembangunan bahagian belakang >C++ >Apakah implikasi tugasan bergerak sendiri untuk vektor dalam Perpustakaan Standard C?
Tugasan Gerakan Kendiri dalam Perpustakaan Standard C
Pustaka standard C menjamin tingkah laku tertentu untuk tugasan bergerak sendiri, seperti yang ditakrifkan dalam standard.
Secara khusus, piawaian menyatakan bahawa untuk fungsi dalam pustaka standard dengan argumen jenis T&&, pelaksanaan mungkin menganggap bahawa parameter ialah rujukan unik kepada hujah. Ini bermakna pustaka standard mungkin mengoptimumkan gelagatnya berdasarkan andaian bahawa parameter ialah nilai r sementara.
Dalam kes penetapan bergerak sendiri, pelaksanaan dibenarkan untuk menganggap bahawa vektor hujah ialah nilai pr. Ini bermakna pustaka standard mungkin melakukan pengoptimuman yang tidak mungkin dilakukan jika hujah ialah nilai l.
Akibatnya, tugasan bergerak sendiri dalam pustaka standard mungkin mengakibatkan vektor ditinggalkan dalam sumber -keadaan kurang, dengan kapasiti 0. Jika vektor sudah mempunyai kapasiti 0, tugasan bergerak sendiri akan menjadi tiada operasi.
Kemas kini
Draf terkini piawaian C menyatakan dengan jelas bahawa dalam keperluan MoveAssignable, ungkapan t = rv (di mana rv ialah nilai r) hanya memerlukan t untuk bersamaan dengan rv sebelum tugasan jika t dan rv tidak merujuk objek yang sama. Selain itu, keadaan rv tidak ditentukan selepas tugasan.
Atas ialah kandungan terperinci Apakah implikasi tugasan bergerak sendiri untuk vektor dalam Perpustakaan Standard C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!