Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Cekap Mencari Elemen dalam Vektor Struktur Menggunakan std::find_if?

Bagaimana untuk Cekap Mencari Elemen dalam Vektor Struktur Menggunakan std::find_if?

Barbara Streisand
Barbara Streisandasal
2024-11-01 09:15:03248semak imbas

How to Efficiently Find Elements in a Vector of Structs Using std::find_if?

Mencari Elemen dalam Vektor Struktur menggunakan std::find

Apabila bekerja dengan struktur data yang kompleks seperti struct, mencari melalui vektor elemen tersebut boleh menjadi mencabar . Dalam konteks ini, fungsi std::find menyediakan penyelesaian untuk mengenal pasti elemen tertentu dalam vektor.

Pertimbangkan definisi struct seperti ini:

<code class="cpp">struct monster 
{
    DWORD id;
    int x;
    int y;
    int distance;
    int HP;
};</code>

Sekarang, katakan kita mempunyai vektor raksasa:

<code class="cpp">std::vector<monster> monsters;</code>

Untuk mencari elemen berdasarkan medan tertentu dalam struct, seperti ID raksasa, kita perlu menggunakan std::find_if dan bukannya std::find. std::find_if mengambil fungsi predikat sebagai hujah, yang membolehkan kami mentakrifkan kriteria carian.

Berikut ialah contoh menggunakan perpustakaan rangsangan:

<code class="cpp">it = std::find_if(bot.monsters.begin(), bot.monsters.end(), 
        boost::bind(&monster::id, _1) == currentMonster);</code>

Atau, jika rangsangan bukan tersedia, anda boleh mencipta objek fungsi find_id anda sendiri seperti ini:

<code class="cpp">struct find_id : std::unary_function<monster, bool> {
    DWORD id;
    find_id(DWORD id) : id(id) {}
    bool operator()(monster const& m) const {
        return m.id == id;
    }
};

it = std::find_if(bot.monsters.begin(), bot.monsters.end(), 
         find_id(currentMonster));</code>

Dengan menggunakan std::find_if dan fungsi predikat yang sesuai, anda boleh mencari dengan cekap melalui vektor struct untuk mencari elemen tertentu berdasarkan mereka pembolehubah ahli.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Elemen dalam Vektor Struktur Menggunakan std::find_if?. 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