C++ Academy · पाठ

unordered_set

हैश-आधारित अद्वितीय तत्व

पाठ 2, कुल 4 में से13 चरण

unordered_set, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

unordered_set क्या है

std::unordered_set अद्वितीय तत्वों को hash तालिका में संग्रहीत करता है। सदस्यता-जाँच में औसतन नियत समय लगता है, लेकिन इसका कोई क्रमबद्ध क्रम नहीं होता।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s{1, 2, 3, 2, 1};
    std::cout << s.size() << " unique values\n";
    return 0;
}

set बनाम unordered_set

मैप की तरह:

  • set: क्रमबद्ध, O(log n)।
  • unordered_set: अक्रमबद्ध, औसतन O(1)।

सबसे तेज़ सदस्यता-जाँच के लिए unordered_set चुनें।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<std::string> seen{"a", "b", "c"};
    std::cout << (seen.count("b") ? "yes" : "no") << '\n';
    return 0;
}

मानों की प्रविष्टि

insert() कोई तत्व जोड़ता है, पहले से मौजूद होने पर उसे अनदेखा कर देता है, और एक ऐसा युग्म लौटाता है जिसका .second बताता है कि तत्व जोड़ा गया या नहीं।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s;
    auto a = s.insert(5);
    auto b = s.insert(5);
    std::cout << std::boolalpha << a.second << ' ' << b.second << '\n';
    return 0;
}

तेज़ सदस्यता-जाँच

यह जाँचना कि आपने कोई मान पहले देखा है या नहीं, इसका सबसे सामान्य उपयोग है। count() 0 या 1 लौटाता है।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<std::string> blocked{"spam", "junk"};
    std::cout << blocked.count("spam") << '\n';
    std::cout << blocked.count("ok") << '\n';
    return 0;
}

तत्व हटाना

erase() कोई मान हटाता है और हटाए गए तत्वों की संख्या लौटाता है (0 या 1)।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s{1, 2, 3};
    s.erase(2);
    std::cout << "count 2: " << s.count(2) << '\n';
    std::cout << "size: " << s.size() << '\n';
    return 0;
}

दोहराव पहचानना

आप किसी धारा में पहला दोहराव, तत्व डालकर और बूलियन परिणाम जाँचकर पहचान सकते हैं।

#include <iostream>
#include <unordered_set>

int main() {
    int data[] = {3, 7, 1, 7, 9};
    std::unordered_set<int> seen;
    for (int x : data) {
        if (!seen.insert(x).second) {
            std::cout << "first duplicate: " << x << '\n';
            break;
        }
    }
    return 0;
}

इटरेशन

इटरेशन काम करता है, लेकिन क्रम निर्दिष्ट नहीं होता। किसी निश्चित क्रम की धारणा किए बिना तत्वों का योग निकालें या उन्हें संसाधित करें।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s{10, 20, 30};
    int total = 0;
    for (int x : s) total += x;
    std::cout << "sum = " << total << '\n';
    return 0;
}

परास से दोहराव हटाना

दोहरावों को तेज़ी से हटाने के लिए किसी परास से unordered_set बनाएँ (क्रम सुरक्षित नहीं रहता)।

#include <iostream>
#include <unordered_set>
#include <vector>

int main() {
    std::vector<int> v{1, 2, 2, 3, 3, 3};
    std::unordered_set<int> u(v.begin(), v.end());
    std::cout << u.size() << " unique\n";
    return 0;
}

find बनाम count

find() आपको तत्व तक पहुँचने वाला इटरेटर देता है, ताकि आप उसका आगे उपयोग कर सकें, जबकि count() केवल मौजूदगी बताता है।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<std::string> s{"alpha", "beta"};
    auto it = s.find("beta");
    std::cout << (it != s.end() ? *it : "none") << '\n';
    return 0;
}

खाली करना और खाली होना

clear() सभी तत्व हटा देता है और empty() जाँचता है कि कोई तत्व नहीं है।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> s{1, 2, 3};
    s.clear();
    std::cout << std::boolalpha << s.empty() << '\n';
    return 0;
}

समुच्चयों का प्रतिच्छेद

समान तत्व ढूँढ़ने के लिए एक समुच्चय पर लूप चलाएँ और दूसरे में उनकी सदस्यता जाँचें।

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> a{1, 2, 3, 4};
    std::unordered_set<int> b{3, 4, 5};
    for (int x : a) if (b.count(x)) std::cout << x << ' ';
    std::cout << '\n';
    return 0;
}

त्वरित जाँच

unordered_set की अपनी समझ जाँचें।

पुनरावलोकन

आपने सीखा कि std::unordered_set:

  • औसतन O(1) संक्रियाओं के साथ अद्वितीय तत्व संग्रहीत करता है
  • इसका कोई सुनिश्चित क्रम नहीं होता
  • तेज़ सदस्यता-जाँच और दोहराव पहचानने के लिए आदर्श है

अगले पाठ में आप अपने स्वनिर्मित प्रकारों के लिए hash बनाना सीखेंगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ C++ सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “unordered_set” पाठ निःशुल्क है?

हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “unordered_set” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“unordered_set” में मैं क्या सीखूँगा?

हैश-आधारित अद्वितीय तत्व आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“unordered_set” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. std::unordered_map
  2. unordered_set
  3. कस्टम हैश फ़ंक्शन
  4. प्रदर्शन संबंधी विचार
← C++ Academy पर वापस जाएँ