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

multimap ::cbegin () và multimap ::cend () trong C ++ STL

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và ví dụ của các hàm multimap ::cbegin () và multimap ::cend () trong C ++ STL.

Multimap trong C ++ STL là gì?

Multimaps là các vùng chứa kết hợp, tương tự như vùng chứa bản đồ. Nó cũng tạo điều kiện để lưu trữ các phần tử được hình thành bởi sự kết hợp của giá trị khóa và giá trị được ánh xạ theo một thứ tự cụ thể. Trong một vùng chứa nhiều bản đồ có thể có nhiều phần tử được liên kết với cùng một khóa. Dữ liệu luôn được sắp xếp nội bộ với sự trợ giúp của các khóa liên quan.

Multimap ::cbegin () là gì?

Hàm multimap ::cbegin () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . cbegin () là hàm bắt đầu không đổi. Hàm này trả về trình lặp hằng số đang trỏ đến phần tử đầu tiên trong vùng chứa nhiều bản đồ. Trình lặp được trả về là trình lặp không đổi, không thể sử dụng chúng để sửa đổi nội dung. Chúng tôi có thể sử dụng chúng để duyệt qua giữa các phần tử của vùng chứa bản đồ bằng cách tăng hoặc giảm trình lặp.

Cú pháp

multi.cbegin();

Tham số

Hàm này không chấp nhận tham số.

Giá trị trả về

Nó trả về một trình vòng lặp trỏ đến phần tử đầu tiên của vùng chứa bản đồ được liên kết.

Đầu vào

multimap<char, int> newmap;
newmap[‘a’] = 1;
newmap[‘b’] = 2;
newmap[‘c’] = 3;
newmap.cbegin();

Đầu ra -

a = 1

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int main(){
   //create the container
   multimap<int, int> mul;
   //insert using emplace
   mul.emplace_hint(mul.begin(), 1, 10);
   mul.emplace_hint(mul.begin(), 2, 20);
   mul.emplace_hint(mul.begin(), 2, 30);
   mul.emplace_hint(mul.begin(), 1, 40);
   mul.emplace_hint(mul.begin(), 1, 50);
   mul.emplace_hint(mul.begin(), 5, 60);
   auto it = mul.cbegin();
   cout << "First element in the multimap is: ";
   cout << "{" << it->first << ", " << it->second << "}\n";
   cout << "\nElements in multimap is : \n";
   cout << "KEY\tELEMENT\n";
   for (auto i = mul.cbegin(); i!= mul.cend(); i++){
      cout << i->first << "\t" << i->second << endl;
   }
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

First element in the multimap is: {1, 50}
Elements in multimap is :
KEY    ELEMENT
1      50
1      40
1      10
2      30
2      20
5      60

Multimap ::cend () là gì?

Hàm multimap ::cend () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . Hàm cend () là hằng số end (). Hàm này trả về trình lặp không đổi của phần tử đã qua phần tử cuối cùng trong vùng chứa nhiều bản đồ được liên kết.

Trình lặp được trả về là trình lặp không đổi, chúng không thể được sử dụng để sửa đổi nội dung. Chúng tôi có thể sử dụng chúng để di chuyển giữa các phần tử của vùng chứa bản đồ bằng cách tăng hoặc giảm trình lặp.

multimap ::cbegin () và multimap ::cend () được sử dụng để duyệt qua toàn bộ vùng chứa bằng cách cho biết đầu dải và cuối dải.

Cú pháp

multi.cend();

Tham số

Hàm này không chấp nhận tham số.

Giá trị trả về

Nó trả về một trình lặp trỏ đến phần tử cuối cùng của vùng chứa bản đồ được liên kết trong quá khứ.

Đầu vào -

multimap <char, int> newmap;
newmap(make_pair(‘a’, 1));
newmap(make_pair(‘b’, 2));
newmap(make_pair(‘c’, 3));
newmap.cend();

Đầu ra -

error

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int main(){
   //create the container
   multimap<int, int> mul;
   //insert using emplace
   mul.emplace_hint(mul.begin(), 1, 10);
   mul.emplace_hint(mul.begin(), 2, 20);
   mul.emplace_hint(mul.begin(), 2, 30);
   mul.emplace_hint(mul.begin(), 1, 40);
   mul.emplace_hint(mul.begin(), 1, 50);
   mul.emplace_hint(mul.begin(), 5, 60);
   cout << "\nElements in multimap is : \n";
   cout << "KEY\tELEMENT\n";
   for (auto i = mul.cbegin(); i!= mul.cend(); i++){
      cout << i->first << "\t" << i->second << endl;
   }
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Elements in multimap is :
KEY ELEMENT
1 50
1 40
1 10
2 30
2 20
5 60