आम तौर पर, 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