Rumah > Artikel > pembangunan bahagian belakang > Mengapakah Range-Based For Loops Berkelakuan Berbeza dengan `std::vector`?
Julat-untuk-Gelung dan std::vector
Apabila menggunakan berasaskan julat untuk gelung dengan bekas perpustakaan standard, jenis data iterator sering menentukan jenis data pembolehubah pembilang. Dalam kes std::vector
Dalam contoh pertama:
<code class="cpp">std::vector<int> intVector(10); for (auto& i : intVector) std::cout << i;
Std::vector< ;int> mengandungi integer, jadi jenis iterator ialah std::vector Sekarang, mari kita pertimbangkan contoh kedua: Di sini, std: :vektor Penyelesaian adalah dengan menggunakan auto&&, yang akan mengikat rujukan nilai jika ia rujukan nilai, atau cipta salinan sementara nilai jika ia sementara: Dengan pengubahsuaian ini, kod akan mengeluarkan kandungan boolVector seperti yang dijangkakan. Atas ialah kandungan terperinci Mengapakah Range-Based For Loops Berkelakuan Berbeza dengan `std::vector`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!<code class="cpp">std::vector<bool> boolVector(10);
for (auto& i : boolVector)
std::cout << i;</code>
<code class="text">invalid initialization of non-const reference of type ‘std::_Bit_reference&’ from an rvalue of type ‘std::_Bit_iterator::reference {aka std::_Bit_reference}’</code>
<code class="cpp">for (auto&& i : boolVector)
std::cout << i;</code>