Computer >> Máy Tính >  >> Lập trình >> C ++

Thứ tự giảm dần trong Bản đồ và Đa bản đồ của C ++ STL

Nói chung, hành vi mặc định của bản đồ và bản đồ đa bản đồ là lưu trữ các phần tử theo thứ tự tăng dần. Nhưng chúng ta có thể lưu trữ phần tử theo thứ tự giảm dần bằng cách sử dụng hàm lớn hơn.

Bản đồ theo thứ tự giảm dần:

Các hàm được sử dụng ở đây -

  • m ::find () - Trả về một trình lặp cho phần tử có giá trị khóa ‘b’ trong bản đồ nếu được tìm thấy, nếu tìm thấy thì trả về trình lặp để kết thúc.

  • m ::xóa () - Xóa giá trị khóa khỏi bản đồ.

  • m ::equal_range () - Trả về một trình lặp của các cặp. Cặp này đề cập đến các giới hạn của một dải ô bao gồm tất cả các phần tử trong vùng chứa có khóa tương đương với khóa.

  • m insert () - Để chèn các phần tử vào vùng chứa bản đồ.

  • kích thước m () - Trả về số phần tử trong vùng chứa bản đồ.

  • m số () - Trả về số lượng kết quả phù hợp với phần tử có giá trị khóa ‘a’ hoặc ‘f’ trong bản đồ.

Mã mẫu

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main () {
   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 << ":";
      map<char, int>::iterator it;
      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;
}

Đầu ra

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

Nhiều bản đồ theo thứ tự giảm dần:

Các hàm được sử dụng ở đây:

  • mm ::find () - Trả về một trình lặp cho phần tử có giá trị khóa ‘b’ trong multimap nếu được tìm thấy, nếu tìm thấy thì trả về trình lặp để kết thúc.

  • mm ::xóa () - Xóa giá trị khóa khỏi multimap.

  • mm ::equal_range () - Trả về một trình lặp của các cặp. Cặp này đề cập đến các giới hạn của một dải ô bao gồm tất cả các phần tử trong vùng chứa có khóa tương đương với khóa.

  • mm chèn () - Để chèn các phần tử vào vùng chứa nhiều bản đồ.

  • kích thước mm () - Trả về số phần tử trong vùng chứa nhiều bản đồ.


Mã mẫu

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main () {
   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 << ":";
      map<char, int>::iterator it;
    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 << "multiap contains:\n";
   for (it = mm.begin(); it != mm.end(); ++it)
      cout << (*it).first << " => " << (*it).second << '\n';
   return 0;
}

Đầu ra

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
multiap contains:
b => 40
a => 10
a => 30