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

Chương trình C ++ để triển khai Multimap trong STL

Multimap tương tự như bản đồ với một ngoại lệ là nhiều phần tử có thể có các khóa giống nhau. Giá trị khóa và cặp giá trị được ánh xạ phải là duy nhất trong đa bản đồ.

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 ::delete () - 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 insert () - Để chèn các phần tử vào vùng chứa nhiều bản đồ.

  • mm size () - 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> 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>('b', 30));
   mm.insert (pair<char, int>('a', 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 <= 'b'; c++) {
      cout << "There are " << mm.count(c) << " elements with key " << c << ":";
      multimap<char, int>::iterator it;
      for (it = mm.equal_range(c).first; it != mm.equal_range(c).second; ++it)
         cout << ' ' << (*it).second;
         cout << endl;
   }
   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;
}

Đầu ra

Size of the multimap: 4
Multimap contains:
a => 10
a => 40
b => 20
b => 30
There are 2 elements with key a: 10 40
There are 2 elements with key b: 20 30
Size of the multimap: 3
Multimap contains:
a => 10
a => 40
b => 30