Julat-untuk-Gelung dengan std::vector
Dalam C , julat-untuk-gelung biasanya digunakan untuk mengulang atas bekas STL. Walau bagaimanapun, seseorang mungkin menghadapi ralat semasa cuba menggunakan pendekatan ini dengan std::vector
Pertimbangkan coretan kod berikut:
<code class="cpp">std::vector<int> intVector(10); for(auto& i : intVector) std::cout << i;</code>
Kod ini berfungsi kerana std: :vektor
Namun, jika kita cuba melakukan operasi yang sama dengan std::vector
<code class="cpp">std::vector<bool> boolVector(10); for(auto& i : boolVector) std::cout << i;</code>
Ini kerana std::vector
Proksi ialah objek sementara yang tidak boleh terikat pada rujukan lnilai. Inilah sebabnya kami tidak boleh menggunakan auto& dalam julat-untuk-gelung di atas. Sebaliknya, kita perlu menggunakan auto&&, yang akan mengikat dengan betul rujukan nilai jika diberikan atau mengekalkan Proksi sementara hidup jika ia diberi proksi. Berikut ialah kod yang diperbetulkan:
<code class="cpp">for(auto&& i : boolVector) std::cout << i;</code>
Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Menggunakan `auto&` dengan `std::vector` dalam Julat-untuk-Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!