Mengalih keluar Elemen Menggunakan Lelaran Terbalik
Apabila bekerja dengan bekas STL, memadamkan elemen menggunakan lelaran terbalik boleh menimbulkan cabaran. Secara lalai, fungsi pemadaman mengharapkan lelaran, bukan lelaran terbalik.
Untuk menyelesaikan isu ini, terdapat beberapa pendekatan:
1. Mendapatkan Lelaran Asas:
Standard mentakrifkan hubungan antara lelaran terbalik (i) dan lelaran asasnya yang sepadan (i.base()) sebagai &*(reverse_iterator(i)) == & *(i - 1). Ini bermakna anda boleh mendapatkan iterator asas dengan menggunakan --() pada i.base().
2. Penyelesaian Khusus C 11:
Dalam C 11, anda mempunyai dua pilihan tambahan:
Kod Contoh:
for (std::list<Cursor::Enum>::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i) { if (*i == pCursor) { // C++11 solution m_CursorStack.erase(std::next(i).base()); // Alternatively, for pre-C++11 or if desired: m_CursorStack.erase(--(i.base())); break; } }
Dengan mengikuti pendekatan ini, anda boleh memadamkan elemen dengan berkesan daripada senarai menggunakan lelaran terbalik sambil mematuhi standard keperluan.
Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Elemen dengan Selamat daripada Bekas STL Menggunakan Lelaran Terbalik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!