Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-11-26 08:52:11
asal
799 orang telah melayarinya

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)
Salin selepas log masuk

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()));
Salin selepas log masuk

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());
Salin selepas log masuk
  • Memajukan ke belakang iterator:
std::advance(i, 1);
m_CursorStack.erase(i.base());
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan