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

C++ में सेट, मल्टीसेट, unordered_set, unordered_multiset के बीच अंतर

यहां हम देखेंगे कि C++ में set, multiset, unordered_set और unordered_multiset में क्या अंतर हैं। आइए कुछ उदाहरणों का उपयोग करके उनके गुणों को देखें।

सेट

सेट के गुण नीचे की तरह हैं

  • डेटा को क्रमबद्ध क्रम में संग्रहीत करता है
  • केवल अनन्य मान संग्रहीत करता है
  • हम डेटा डाल या हटा सकते हैं, लेकिन डेटा नहीं बदल सकते
  • प्रारंभ और समाप्ति पुनरावर्तक का उपयोग करके हम एक से अधिक तत्वों को हटा सकते हैं
  • हम इटरेटर्स का उपयोग करके ट्रैवर्स कर सकते हैं
  • बाइनरी सर्च ट्री का उपयोग करके सेट कार्यान्वित किए जाते हैं

आइए अब एक उदाहरण देखें

उदाहरण

#include <iostream>
#include <set>
using namespace std;
main() {
   int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
   set<int> my_set;
   for(int i = 0; i<15; i++) {
      my_set.insert(data[i]);
   }
   set<int>::iterator it;
   for(it = my_set.begin(); it != my_set.end(); it++) {
      cout << "Item: " << *it << endl;
   }
}

आउटपुट

Item: 11
Item: 22
Item: 23
Item: 33
Item: 41
Item: 44
Item: 55
Item: 66
Item: 77
Item: 88
Item: 99

मल्टीसेट

सेट के गुण नीचे की तरह हैं -

  • डेटा को क्रमबद्ध क्रम में संग्रहीत करता है
  • यह डुप्लीकेट डेटा स्टोर करने की अनुमति देता है
  • स्टार्ट और एंड इटरेटर का उपयोग करके हम एक से अधिक तत्वों को हटा सकते हैं।

अब एक उदाहरण देखते हैं।

उदाहरण

#include <iostream>
#include <set>
using namespace std;
main() {
   int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
   multiset<int> my_set;
   for(int i = 0; i<15; i++) {
      my_set.insert(data[i]);
   }
   multiset<int>::iterator it;
   for(it = my_set.begin(); it != my_set.end(); it++) {
      cout << "Item: " << *it << endl;
   }
}

आउटपुट

Item: 11
Item: 11
Item: 22
Item: 22
Item: 23
Item: 33
Item: 41
Item: 44
Item: 55
Item: 66
Item: 66
Item: 66
Item: 77
Item: 88
Item: 99

अनियंत्रित सेट

सेट के गुण नीचे की तरह हैं -

  • डेटा किसी भी क्रम में रखा जा सकता है
  • डुप्लिकेट डेटा छोड़ दिया जाएगा
  • यह सेट हैश-टेबल का उपयोग करके बनाया गया है
  • हम केवल एक तत्व को मिटा सकते हैं, जहां इटरेटर इंगित कर रहा है

अब एक उदाहरण देखते हैं।

उदाहरण

#include <iostream>
#include <unordered_set>
using namespace std;
main() {
   int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
   unordered_set<int> my_set;
   for(int i = 0; i<15; i++) {
      my_set.insert(data[i]);
   }
   unordered_set<int>::iterator it;
   for(it = my_set.begin(); it != my_set.end(); it++) {
      cout << "Item: " << *it << endl;
   }
}

आउटपुट

Item: 11
Item: 55
Item: 22
Item: 66
Item: 33
Item: 44
Item: 77
Item: 88
Item: 99
Item: 23
Item: 41

अनियंत्रित मल्टीसेट

सेट के गुण नीचे की तरह हैं -

  • डेटा किसी भी क्रम में रखा जा सकता है
  • डुप्लिकेट डेटा की अनुमति है
  • यह सेट हैश-टेबल का उपयोग करके बनाया गया है
  • हम केवल एक तत्व को मिटा सकते हैं, जहां इटरेटर इंगित कर रहा है

अब एक उदाहरण देखते हैं।

उदाहरण

#include <iostream>
#include <unordered_set>
using namespace std;
main() {
   int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
   unordered_multiset<int> my_set;
   for(int i = 0; i<15; i++) {
      my_set.insert(data[i]);
   }
   unordered_multiset<int>::iterator it;
   for(it = my_set.begin(); it != my_set.end(); it++) {
      cout << "Item: " << *it << endl;
   }
}

आउटपुट

Item: 11
Item: 55
Item: 22
Item: 66
Item: 33
Item: 22
Item: 11
Item: 44
Item: 77
Item: 88
Item: 66
Item: 99
Item: 66
Item: 23
Item: 41

  1. सी ++ में नए ऑपरेटर और ऑपरेटर के बीच अंतर?

    C++ में जब हम एक नई वस्तु बनाना चाहते हैं, तो हमें मेमोरी में एक मेमोरी ब्लॉक बनाना होगा, फिर मेमोरी ब्लॉक को इनिशियलाइज़ करने के लिए कंस्ट्रक्टर को भी कॉल करना होगा। हम new कीवर्ड का उपयोग करके मेमोरी एलिमेंट बना सकते हैं। यह नया ऑपरेटर लगातार दो टास्क कर रहा है। लेकिन ऑपरेटर नया केवल मेमोरी स्पेस

  1. सी ++ में 'स्ट्रक्चर' और 'टाइपिफ़ स्ट्रक्चर' के बीच अंतर?

    C++ में, struct और typedef struct के बीच कोई अंतर नहीं है, क्योंकि C++ में, सभी struct/union/enum/class घोषणाएं इस तरह काम करती हैं जैसे वे परोक्ष रूप से typedef हैं। एड, जब तक नाम उसी नाम के साथ किसी अन्य घोषणा द्वारा छिपाया नहीं जाता है। हालांकि एक सूक्ष्म अंतर है कि टाइपपीफ को आगे घोषित नहीं किया

  1. C++ स्ट्रिंग स्थिरांक और वर्ण स्थिरांक के बीच अंतर

    C++ में, सिंगल कोट्स में एक कैरेक्टर एक कैरेक्टर लिटरल होता है। यह चार प्रकार का है। उदाहरण के लिए, ए ASCII आधारित सिस्टम पर 97 के मान के साथ चार प्रकार का है। दोहरे उद्धरण चिह्नों में एक वर्ण या वर्णों की एक स्ट्रिंग एक स्ट्रिंग अक्षर का प्रतिनिधित्व करती है। यह प्रकार का है const char[] और स्ट्रि