Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सेट एसटीएल से हटाने और खोजने के लिए सी ++ प्रोग्राम

मान लीजिए कि हमारे पास पूर्णांक प्रकार के डेटा के लिए एक सेट डेटा संरचना है। हमारे मानक इनपुट में हम n प्रश्न प्रदान करते हैं। प्रत्येक क्वेरी में (प्रत्येक पंक्ति में) हमारे पास दो तत्व होते हैं। पहला ऑपरेटर है, दूसरा तत्व है। संचालन नीचे की तरह हैं -

  • डालना। यह तत्व को सेट में सम्मिलित करेगा

  • मिटाना। यह तत्व को सेट से हटा देगा (यदि मौजूद है)

  • खोज। यह तत्व को सेट में खोजेगा, यदि मौजूद है तो हाँ, अन्यथा नहीं।

इसलिए, यदि इनपुट n =7 जैसा है, तो क्वेरीज़ =[[1,5], [1,8], [1,3], [2,8], [1,9], [3,8], [3,3]], तो आउटपुट [नहीं, हाँ] होगा क्योंकि 8 सेट में मौजूद नहीं है और 3 मौजूद है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक सेट को परिभाषित करें
  • एस के माध्यम से पुनरावृति करने के लिए एक सेट पुनरावर्तक 'इसे' परिभाषित करें
  • q :=प्रश्नों की संख्या
  • जबकि q गैर-शून्य है, प्रत्येक पुनरावृत्ति के बाद q घटाएं, करें:
    • क्वेरी टाइप qt लें
    • क्यूटी के लिए
      • यदि qt 1 है, तो x s डालें
        • ब्लॉक से बाहर आएं
      • यदि qt 2 है, तो s से x हटा दें
        • ब्लॉक से बाहर आएं
      • अगर क्यूटी 3 है,
        • इसके अंदर कॉल ढूंढें(x)
        • यदि यह s के अंतिम तत्व के समान है, तो:
          • प्रिंट नहीं
        • अन्यथा
          • हां प्रिंट करें
        • ब्लॉक से बाहर आएं

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <iostream>
#include <set>
using namespace std;
int main(){
    set<int> s;
    set<int>::iterator it;
    int q,x;
    int qt;
    cin >> q;
    while(q--){
        cin>>qt>>x;
        switch(qt){
            case 1:s.insert(x);
                    break;
            case 2:s.erase(x);
                    break;
            case 3:it=s.find(x);
                    if(it==s.end())
                        cout<<"No"<<endl;
                    else
                        cout<<"Yes"<<endl;
                    break;
        }
    }
    return 0;
}

इनपुट

7
1 5
1 8
1 3
2 8
1 9
3 8
3 3

आउटपुट

No
Yes

  1. STL में Set_Union को लागू करने के लिए C++ प्रोग्राम

    दो समुच्चयों का मिलन उन तत्वों द्वारा निर्मित होता है जो किसी एक समुच्चय में या दोनों में मौजूद होते हैं। दूसरे सेट के तत्व जिनमें पहले सेट में समान तत्व होते हैं, उन्हें परिणामी सेट में कॉपी नहीं किया जाता है। सामान्य सेट ऑपरेशन हैं - संघ सेट करें चौराहे सेट करें सममित सेट अंतर या अनन्य-या अंतर य

  1. सी++ कार्यक्रम एसटीएल में Set_Intersection लागू करने के लिए

    दो समुच्चयों का प्रतिच्छेदन केवल उन तत्वों से बनता है जो दोनों समुच्चयों में उभयनिष्ठ हैं। फ़ंक्शन द्वारा कॉपी किए गए तत्व हमेशा पहले सेट से उसी क्रम में आते हैं। दोनों सेटों के तत्वों को पहले ही ऑर्डर कर दिया जाएगा। सामान्य सेट ऑपरेशन हैं - संघ सेट करें चौराहे सेट करें सममित सेट अंतर या अनन्य-या

  1. सी++ प्रोग्राम एसटीएल में Set_Difference को लागू करने के लिए

    दो समुच्चयों का अंतर केवल पहले सेट में मौजूद तत्वों से बनता है, दूसरे सेट में नहीं। फ़ंक्शन द्वारा कॉपी किए गए तत्व हमेशा पहले सेट से उसी क्रम में आते हैं। दोनों सेटों के तत्वों को पहले ही ऑर्डर कर दिया जाएगा। सामान्य सेट ऑपरेशन हैं - संघ सेट करें चौराहे सेट करें सममित सेट अंतर या अनन्य-या अंतर या