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!