Membandingkan Iterator daripada Bekas Berbeza
Apabila bekerja dengan bekas, adalah penting untuk memahami implikasi membandingkan iterator daripada bekas yang berbeza. Timbul persoalan: adakah dibenarkan untuk membandingkan iterator yang dimiliki oleh bekas yang berbeza?
Pertimbangkan kod berikut:
<code class="cpp">std::vector<int> foo; std::vector<int> bar; std::cout << (foo.begin() == bar.begin());</code>
Adakah ungkapan foo.begin() == bar.begin() menghasilkan palsu atau membawa kepada tingkah laku yang tidak ditentukan?
Menyelidiki piawaian C 11 (n3337) boleh menjelaskan dilema ini:
Iterators dalam Jujukan Yang Sama
Membandingkan Iterator daripada Bekas Berbeza
Memandangkan keperluan ini, membandingkan iterator daripada bekas yang berbeza adalah tingkah laku yang tidak ditentukan.
Kesimpulannya, membandingkan iterator daripada bekas yang berbeza ialah gelagat yang tidak ditentukan dan adalah penting untuk mematuhi kekangan ini semasa menulis iterator tersuai dan memanipulasi bekas dalam kod anda.
Atas ialah kandungan terperinci Adakah Sah untuk Membandingkan Iterator daripada Bekas Berbeza dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!