Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memadamkan Elemen daripada C `std::list` Menggunakan Reverse Iterator?

Bagaimana untuk Memadamkan Elemen daripada C `std::list` Menggunakan Reverse Iterator?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-26 08:52:11785semak imbas

How to Erase Elements from a C   `std::list` Using Reverse Iterators?

Memadamkan Elemen Senarai Menggunakan Leulang Terbalik

Dalam C , fungsi pemadaman dalam bekas std::list mengharapkan parameter lelaran. Walau bagaimanapun, anda mungkin menghadapi situasi di mana anda perlu mengalih keluar elemen menggunakan lelaran terbalik (std::list::reverse_iterator).

Penyelesaian:

Mengikut standard C, perhubungan berikut wujud antara lelaran terbalik i dan lelaran asasnya i.base():

&*(reverse_iterator(i)) == &*(i - 1)

Ini bermakna lelaran terbalik menghala ke elemen sejurus selepas elemen yang ditunjuk oleh lelaran asasnya.

Untuk memadamkan elemen menggunakan lelaran terbalik , anda perlu menggunakan offset untuk mendapatkan lelaran asas:

m_CursorStack.erase(--(i.base()));

Ungkapan ini berkesan mengurangkan lelaran asas dengan satu, dengan itu menunjuk ke elemen yang akan dipadamkan.

Penyelesaian Tambahan (C 11 dan Kemudian):

  • Menggunakan std::next:
m_CursorStack.erase(std::next(i).base());
  • Memajukan ke belakang iterator:
std::advance(i, 1);
m_CursorStack.erase(i.base());

Penyelesaian ini lebih ringkas dan lebih jelas daripada pendekatan asal. Pilih yang paling sesuai dengan keperluan anda.

Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Elemen daripada C `std::list` Menggunakan Reverse Iterator?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn