Menyebabkan Ralat dalam C ?
" />
Dalam C , berasaskan julat untuk gelung menyediakan cara yang mudah untuk lelaran melalui elemen dalam bekas. Walau bagaimanapun, tingkah laku tertentu mungkin kelihatan mengejutkan apabila digunakan dengan bekas nilai boolean.
Pertimbangkan kod berikut:
<code class="cpp">std::vector<int> intVector(10); for (auto& i : intVector) std::cout << i; std::vector<bool> boolVector(10); for (auto& i : boolVector) std::cout << i;</code>
Gelung pertama berjaya berulang melalui intVector dan mencetak elemen integer. Walau bagaimanapun, gelung kedua menghasilkan ralat berikut:
error: invalid initialization of non-const reference of type ‘std::_Bit_reference&’ from an rvalue of type ‘std::_Bit_iterator::reference {aka std::_Bit_reference}’ for (auto& i : boolVector)
Ralat ini berlaku kerana std::vector
<code class="cpp">for (auto&& i : boolVector) std::cout << i;</code>
Atas ialah kandungan terperinci Mengapakah Menggunakan Range-Based Untuk Gelung Dengan std::vector