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

hàm multiset crbegin () và 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à các ví dụ của hàm multiset ::crbegin () và multiset ::crend ​​() trong C ++ STL.

Multiset trong C ++ STL là gì?

Multisets là các vùng chứa tương tự như vùng chứa đã đặt, có nghĩa là chúng lưu trữ các giá trị ở dạng khóa giống như một tập hợp, theo một thứ tự cụ thể.

Trong multiset, các giá trị được xác định là các khóa giống như các tập hợp. Sự khác biệt chính giữa bộ đa hợp và bộ là bộ có các khóa riêng biệt, nghĩa là không có hai khóa nào giống nhau, trong bộ đa hợp có thể có cùng giá trị khóa.

Các khóa nhiều tập hợp được sử dụng để triển khai cây tìm kiếm nhị phân.

Multiset ::crbegin () là gì?

Hàm multiset ::crbegin () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề. crbegin () có nghĩa là hàm bắt đầu đảo ngược không đổi, có nghĩa là hàm này trả về trình lặp hằng trỏ đến phần tử cuối cùng của vùng chứa nhiều tập. Hàm này là phiên bản đảo ngược của multiset ::cbegin ()

Trình lặp hằng số chỉ có thể được sử dụng để lặp lại qua vùng chứa nhiều tập, điều này không thể thực hiện thay đổi trong vùng chứa nhiều tập.

Cú pháp

ms_name.crbegin();

Tham số

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

Giá trị trả về

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

Ví dụ

Đầu vào

std::multiset<int> mymultiset = {1, 2, 2, 3, 4};
mymultiset.crbegin();

Đầu ra

4

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int main(){
   int arr[] = {10, 20, 30, 40, 50, 60};
   multiset<int> check(arr, arr + 6);
   cout<<"First element fetched using crbegin() function: "<<*(check.crbegin()) << endl;
   for(auto i = check.crbegin(); i!= check.crend(); i++)
      cout << *i << " ";
   return 0;
}

Đầu ra

First element fetched using crbegin() function: 60
60 50 40 30 20 10

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

Hàm multiset ::crend ​​() là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . crend ​​() có nghĩa là hàm kết thúc không đổi, có nghĩa là hàm này trả về trình lặp hằng trỏ đến phần tử đứng trước phần tử đầu tiên của vùng chứa nhiều tập. Đây là phiên bản đảo ngược của cend ()

Trình lặp hằng số chỉ có thể được sử dụng để lặp lại qua vùng chứa nhiều tập, điều này không thể thực hiện thay đổi trong vùng chứa nhiều tập.

Cú pháp

ms_name.crend();

Tham số

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

Giá trị trả về

Hàm này trả về một trình lặp không đổi đang trỏ đến phần tử trước phần tử đầu tiên của vùng chứa.

Ví dụ

Đầu vào

std::multiset<int> mymultiset = {1, 2, 2, 3, 4};
mymultiset.crend();

Đầu ra

error

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int main(){
   int arr[] = {10, 20, 30, 40, 50, 60};
   multiset<int> check(arr, arr + 6);
   cout<<"Elements in the list are: ";
   for(auto i = check.crbegin(); i!= check.crend(); i++)
      cout << *i << " ";
   return 0;
}

Đầu ra

Elements in the list are: 60 50 40 30 20 10