"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Std::find_if का उपयोग करके संरचनाओं के वेक्टर में तत्वों को कुशलतापूर्वक कैसे खोजें?

Std::find_if का उपयोग करके संरचनाओं के वेक्टर में तत्वों को कुशलतापूर्वक कैसे खोजें?

2024-11-01 को प्रकाशित
ब्राउज़ करें:663

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

std::find

का उपयोग करके स्ट्रक्चर्स के वेक्टर में तत्वों को ढूंढना

स्ट्रक्चर्स जैसे जटिल डेटा संरचनाओं के साथ काम करते समय, उन तत्वों के वेक्टर के माध्यम से खोजना चुनौतीपूर्ण हो सकता है . इस संदर्भ में, std::find फ़ंक्शन एक वेक्टर के भीतर विशिष्ट तत्वों की पहचान करने के लिए एक समाधान प्रदान करता है।

इस तरह एक संरचना परिभाषा पर विचार करें:

struct monster 
{
    DWORD id;
    int x;
    int y;
    int distance;
    int HP;
};

अब, मान लें कि हमारे पास राक्षसों का एक वेक्टर है:

std::vector monsters;

के आधार पर एक तत्व की खोज करना संरचना के भीतर एक विशिष्ट क्षेत्र, जैसे राक्षस की आईडी, हमें std::find के बजाय std::find_if का उपयोग करने की आवश्यकता है। std::find_if एक विधेय फ़ंक्शन को एक तर्क के रूप में लेता है, जो हमें खोज मानदंड को परिभाषित करने की अनुमति देता है।

यहां बूस्ट लाइब्रेरी का उपयोग करके एक उदाहरण दिया गया है:

it = std::find_if(bot.monsters.begin(), bot.monsters.end(), 
        boost::bind(&monster::id, _1) == currentMonster);

या, यदि बूस्ट उपलब्ध नहीं है, तो आप इस तरह अपना स्वयं का find_id फ़ंक्शन ऑब्जेक्ट बना सकते हैं:

struct find_id : std::unary_function {
    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));

std::find_if और उपयुक्त विधेय फ़ंक्शन का उपयोग करके, आप उनके सदस्य चर के आधार पर विशिष्ट तत्वों को ढूंढने के लिए structs के वेक्टर के माध्यम से कुशलतापूर्वक खोज सकते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3