Computer >> Hướng Dẫn 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 hoạt động, cú pháp và ví dụ của multiset::crbegin() và multiset::crend() trong C++ STL.

multiset trong C++ STL là gì?

Multiset là container tương tự set, lưu trữ giá trị dưới dạng khóa theo thứ tự xác định. Khác biệt: set khóa phân biệt, multiset cho phép khóa trùng lặp. Khóa multiset dùng để triển khai cây tìm kiếm nhị phân.

multiset::crbegin() là gì?

multiset::crbegin() là hàm tích hợp sẵn trong C++ STL, định nghĩa trong header <set>. crbegin() là constant reverse begin, trả về iterator hằng (constant iterator) trỏ đến phần tử cuối cùng của multiset. Đây là phiên bản ngược của cbegin().

Iterator hằng chỉ dùng để lặp qua multiset, không thể thay đổi container.

Cú pháp

ms_name.crbegin();

Tham số

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

Giá trị trả về

Trả về iterator hằng trỏ đến phần tử cuối cùng của container.

Ví dụ

Đầu vào

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

Kết quả

4

Ví dụ đầy đủ

#include <bits/stdc++.h> 
using namespace std; 

int main() { 
    int arr[] = {10, 20, 30, 40, 50, 60}; 
    multiset<int> check(arr, arr + 6); 
    cout << "Phần tử đầu tiên lấy bằng crbegin(): " << *(check.crbegin()) << endl; 
    for(auto i = check.crbegin(); i != check.crend(); i++) 
        cout << *i << " "; 
    return 0; 
}

Kết quả

Phần tử đầu tiên lấy bằng crbegin(): 60 
60 50 40 30 20 10

multiset::crend() là gì?

multiset::crend() là hàm tích hợp sẵn trong C++ STL, định nghĩa trong <set>. crend() là constant reverse end, trả về iterator hằng trỏ đến phần tử trước phần tử đầu tiên của multiset. Đây là phiên bản ngược của cend().

Iterator hằng chỉ dùng để lặp, không thể sửa đổi container.

Cú pháp

ms_name.crend();

Tham số

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

Giá trị trả về

Trả về iterator hằng trỏ đến phần tử ngay trước phần tử đầu tiên của container.

Ví dụ

Đầu vào

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

Kết quả

error (không thể giải tham chiếu)

Ví dụ đầy đủ

#include <bits/stdc++.h> 
using namespace std; 

int main() { 
    int arr[] = {10, 20, 30, 40, 50, 60}; 
    multiset<int> check(arr, arr + 6); 
    cout << "Các phần tử trong danh sách: "; 
    for(auto i = check.crbegin(); i != check.crend(); i++) 
        cout << *i << " "; 
    return 0; 
}

Kết quả

Các phần tử trong danh sách: 60 50 40 30 20 10