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

C++ STL में Map और Multimap में अवरोही क्रम

आम तौर पर, map और multimap का डिफ़ॉल्ट व्यवहार तत्वों को आरोही क्रम में संग्रहीत करना होता है। लेकिन हम greater फंक्शन का उपयोग करके तत्वों को अवरोही क्रम में संग्रहीत कर सकते हैं।

अवरोही क्रम में Map

यहां उपयोग किए गए फंक्शन:

  • m::find() – यदि map में key 'b' वाला तत्व मिलता है तो उसका इटरेटर लौटाता है, अन्यथा end इटरेटर लौटाता है।
  • m::erase() – map से key मान को हटाता है।
  • m::equal_range() – जोड़ों का एक इटरेटर लौटाता है। यह जोड़ा उन सभी तत्वों की सीमा को संदर्भित करता है जिनका key दिए गए key के बराबर है।
  • m::insert() – map कंटेनर में तत्व डालने के लिए।
  • m::size() – map कंटेनर में तत्वों की संख्या लौटाता है।
  • m::count() – map में key 'a' या 'f' वाले तत्व से मेल खाने वाले तत्वों की संख्या लौटाता है।

उदाहरण कोड

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // greater<int> कम्पैरेटर का उपयोग करके अवरोही क्रम में map
    map<char, int, greater<int>> m;
    map<char, int>::iterator it;

    m.insert(pair<char, int>('a', 10));
    m.insert(pair<char, int>('b', 20));
    m.insert(pair<char, int>('c', 30));
    m.insert(pair<char, int>('d', 40));

    cout << "Size of the map: " << m.size() << endl;
    cout << "map contains:\n";

    for (it = m.begin(); it != m.end(); ++it)
        cout << (*it).first << " => " << (*it).second << '\n';

    for (char c = 'a'; c <= 'd'; c++) {
        cout << "There are " << m.count(c) << " element(s) with key " << c << ":";
        for (it = m.equal_range(c).first; it != m.equal_range(c).second; ++it)
            cout << ' ' << (*it).second;
        cout << endl;
    }

    if (m.count('a'))
        cout << "The key a is present\n";
    else
        cout << "The key a is not present\n";

    if (m.count('f'))
        cout << "The key f is present\n";
    else
        cout << "The key f is not present\n";

    it = m.find('b');
    m.erase(it);

    cout << "Size of the map: " << m.size() << endl;
    cout << "map contains:\n";
    for (it = m.begin(); it != m.end(); ++it)
        cout << (*it).first << " => " << (*it).second << '\n';

    return 0;
}

आउटपुट

Size of the map: 4
map contains:
d => 40
c => 30
b => 20
a => 10
There are 1 element(s) with key a: 10
There are 1 element(s) with key b: 20
There are 1 element(s) with key c: 30
There are 1 element(s) with key d: 40
The key a is present
The key f is not present
Size of the map: 3
map contains:
d => 40
c => 30
a => 10

अवरोही क्रम में Multimap

उपयोग किए गए फंक्शन:

  • mm::find() – यदि multimap में key 'b' वाला तत्व मिलता है तो उसका इटरेटर लौटाता है, अन्यथा end इटरेटर लौटाता है।
  • mm::erase() – multimap से key मान को हटाता है।
  • mm::equal_range() – जोड़ों का एक इटरेटर लौटाता है। यह जोड़ा उन सभी तत्वों की सीमा को संदर्भित करता है जिनका key दिए गए key के बराबर है।
  • mm::insert() – multimap कंटेनर में तत्व डालने के लिए।
  • mm::size() – multimap कंटेनर में तत्वों की संख्या लौटाता है।

उदाहरण कोड

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // greater<char> कम्पैरेटर का उपयोग करके अवरोही क्रम में multimap
    multimap<char, int, greater<char>> mm;
    multimap<char, int>::iterator it;

    mm.insert(pair<char, int>('a', 10));
    mm.insert(pair<char, int>('b', 20));
    mm.insert(pair<char, int>('a', 30));
    mm.insert(pair<char, int>('b', 40));

    cout << "Size of the multimap: " << mm.size() << endl;
    cout << "multimap contains:\n";

    for (it = mm.begin(); it != mm.end(); ++it)
        cout << (*it).first << " => " << (*it).second << '\n';

    for (char c = 'a'; c <= 'd'; c++) {
        cout << "There are " << mm.count(c) << " elements with key " << c << ":";
        for (it = mm.equal_range(c).first; it != mm.equal_range(c).second; ++it)
            cout << ' ' << (*it).second;
        cout << endl;
    }

    if (mm.count('a'))
        cout << "The key a is present\n";
    else
        cout << "The key a is not present\n";

    if (mm.count('f'))
        cout << "The key f is present\n";
    else
        cout << "The key f is not present\n";

    it = mm.find('b');
    mm.erase(it);

    cout << "Size of the multimap: " << mm.size() << endl;
    cout << "multimap contains:\n";
    for (it = mm.begin(); it != mm.end(); ++it)
        cout << (*it).first << " => " << (*it).second << '\n';

    return 0;
}

आउटपुट

Size of the multimap: 4
multimap contains:
b => 20
b => 40
a => 10
a => 30
There are 2 elements with key a: 10 30
There are 2 elements with key b: 20 40
There are 0 elements with key c:
There are 0 elements with key d:
The key a is present
The key f is not present
Size of the multimap: 3
multimap contains:
b => 40
a => 10
a => 30
  1. - C++ STL में map::cbegin() और map::cend() फंक्शन

    इस लेख में हम C++ STL में map::cbegin() और map::cend() फंक्शन के कार्य, सिंटैक्स और उदाहरणों पर चर्चा करेंगे।C++ STL में मैप क्या है?मैप्स एसोसिएटिव कंटेनर हैं, जो की-वैल्यू और मैप्ड वैल्यू के संयोजन से बने तत्वों को एक विशिष्ट क्रम में संग्रहीत करने की सुविधा प्रदान करते हैं। एक मैप कंटेनर में डेटा

  1. - C++ STL में map::emplace() फंक्शन

    इस लेख में हम C++ STL में map::emplace() फंक्शन के कार्य, सिंटैक्स और उदाहरणों पर चर्चा करेंगे।C++ STL में मैप क्या है?मैप्स एसोसिएटिव कंटेनर हैं, जो की-वैल्यू और मैप्ड वैल्यू के संयोजन से बने तत्वों को एक विशिष्ट क्रम में संग्रहीत करने की सुविधा प्रदान करते हैं। एक मैप कंटेनर में डेटा आंतरिक रूप से

  1. - C++ STL में Set बनाम Map

    Set एक अमूर्त डेटा प्रकार है जिसमें प्रत्येक एलिमेंट अद्वितीय होना चाहिए क्योंकि एलिमेंट का मान उसकी पहचान करता है। एलिमेंट का मान एक बार सेट में जोड़े जाने के बाद संशोधित नहीं किया जा सकता है, लेकिन उस एलिमेंट के संशोधित मान को हटाना और जोड़ना संभव है। एक Map एक सहयोगी कंटेनर है जो एलिमेंट्स को मै