Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk mengalih keluar Elemen daripada Peta Standard C Berdasarkan Keadaan?

Bagaimana untuk mengalih keluar Elemen daripada Peta Standard C Berdasarkan Keadaan?

Susan Sarandon
Lepaskan: 2024-12-02 17:31:14
asal
429 orang telah melayarinya

How to Remove Elements from a C   Standard Map Based on a Condition?

Setara dengan Alih Keluar-Jika untuk Peta Standard

Soalan:

Dalam C , bagaimana bolehkah saya mengalih keluar julat elemen dari peta berdasarkan keadaan tertentu menggunakan STL algoritma?

Jawapan:

Walaupun algoritma remove_if tidak boleh digunakan untuk bekas bersekutu seperti peta, terdapat pendekatan yang setara menggunakan iterator. Begini cara anda boleh melakukannya:

bool predicate(const std::pair<int, std::string>& x) {
    return x.first > 2;
}

int main() {
    std::map<int, std::string> aMap;

    // Populate the map...

    std::map<int, std::string>::iterator iter = aMap.begin();
    std::map<int, std::string>::iterator endIter = aMap.end();

    for (; iter != endIter;) {
        if (predicate(*iter)) {
            // Here, increment iter after erasing
            iter = aMap.erase(iter);
        } else {
            ++iter;
        }
    }
}
Salin selepas log masuk

Penjelasan:

  • Kod menggunakan gelung untuk lelaran melalui peta.
  • Apabila elemen memenuhi syarat, iterator ditambah selepas memadamkan elemen itu menggunakan pemadaman kaedah.
  • Ini mengelakkan melangkau elemen yang sepatutnya dipadamkan.
  • Mengemas kini lelaran selepas memadam memastikan gelung berjalan dengan betul, kerana lelaran mungkin menjadi tidak sah selepas memadamkan elemen.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Elemen daripada Peta Standard C Berdasarkan Keadaan?. 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