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

multimap ::crbegin () và multimap ::crend ​​() 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 ::crbegin () và multimap ::crend ​​() 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 khóa-giá trị 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 ::crbegin () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . crbegin () ngụ ý liên tục đảo ngược bắt đầu, có nghĩa là đảo ngược của cbegin là hằng số bắt đầu, nói cách khác, hàm crbegin () sẽ trả về trình lặp đang trỏ đến phần tử cuối cùng của vùng chứa đa bản đồ được liên kết với hàm. Không thể sử dụng trình lặp này để sửa đổi nhiều bản đồ. Điều này chỉ có thể được sử dụng để duyệt qua vùng chứa đã đặt.

Cú pháp

mutliMap_name.crbegin();

Tham số

Hàm này không chấp nhận bất kỳ tham số nào.

Giá trị trả về

Hàm này trả về trình lặp đang trỏ đến phần tử cuối cùng của vùng chứa.

Đầu vào

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

Đầu ra

c:3

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.crbegin();
   cout<<"Last element using crbegin() is: {"<<it->first<< ", " << it->second << "}\n";
   cout <<"\nElements in multimap is : \n";
   cout << "KEY\tELEMENT\n";
   for (auto i = mul.crbegin(); i!= mul.crend(); 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 -

Last element using crbegin() is: {5, 60}
Elements in multimap is :
KEY ELEMENT
5 60
2 20
2 30
1 10
1 40
1 50

Multimap ::crend ​​() là gì?

Hàm multimap ::crend ​​() là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . crend ​​() ngụ ý trình lặp kết thúc ngược không đổi, có nghĩa là nó đảo ngược với cend là một trình lặp kết thúc không đổi, nói cách khác, hàm crend ​​() sẽ trả về trình lặp đang trỏ đến vị trí ngay trước vị trí đầu tiên của vùng chứa được liên kết với chức năng. Không thể sử dụng trình lặp này để sửa đổi nhiều bản đồ. Điều này chỉ có thể được sử dụng để đi qua vùng chứa nhiều bản đồ.

Cú pháp

newmultimap.crend();

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ử đầu tiên trước đó của vùng chứa được liên kết.

Đầu vào

multimap<char, int&lgt; newmap;
newmap(make_pair(‘a’, 1));
newmap(make_pair(‘b’, 2));
newmap(make_pair(‘c’, 3));
newmap.crend();

Đầ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.crbegin(); i!= mul.crend(); 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
5 60
2 20
2 30
1 10
1 40
1 50