Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm set::crbegin() và set::crend() trong C++ STL


Trong bài viết này, chúng ta sẽ thảo luận về các hàm set::crbegin() và set::crend() trong C++ STL, cú pháp, cách hoạt động và giá trị trả về.

Set trong C++ STL là gì?

Set trong C++ STL là container chứa các phần tử duy nhất theo thứ tự chung. Set bắt buộc các phần tử duy nhất vì giá trị của phần tử xác định bản thân phần tử. Một khi đã thêm giá trị vào set container thì sau đó không thể sửa đổi, tuy nhiên vẫn có thể xóa hoặc thêm giá trị vào set. Set được sử dụng như cây tìm kiếm nhị phân.

set::crbegin() là gì?

crbegin() là hàm built-in trong C++ STL, được định nghĩa trong header <set>. crbegin() ngụ ý constant reverse begin iterator, nghĩa là ngược của cbegin (constant begin iterator). Hàm trả về iterator trỏ đến phần tử cuối cùng của set container liên kết. Giống các iterator khác, cũng có thể dùng để sửa đổi set, nhưng thường chỉ dùng để duyệt container.

Cú pháp

constant_iterator name_of_set.crbegin();

Tham số

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

Giá trị trả về

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

Ví dụ

Input: set<int> myset = {1, 2, 3, 4, 5}; myset.crbegin(); Output: 5

Ví dụ hoàn chỉnh

#include <bits/stdc++.h>
using namespace std;
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    set<int> ch(arr, arr + 5);
    for (auto i = ch.crbegin(); i != ch.crend(); i++)
        cout << *i << " ";
    return 0;
}

Kết quả

5 4 3 2 1

set::crend() là gì?

crend() là hàm built-in trong C++ STL, được định nghĩa trong header <set>. crend() ngụ ý constant reverse end iterator, ngược của cend (constant end iterator). Hàm trả về iterator trỏ đến vị trí ngay trước phần tử đầu tiên của set container liên kết. Cũng có thể dùng để sửa đổi set, nhưng thường chỉ dùng để duyệt.

Cú pháp

constant_iterator name_of_set.crend();

Tham số

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

Giá trị trả về

Trả về iterator trỏ đến vị trí ngay trước phần tử đầu tiên của set container liên kết.

Ví dụ

Input: set<int> myset = {1, 2, 3, 4, 5}; myset.crend(); Output: 9 // số ngẫu nhiên trước phần tử đầu tiên trong set container.

Ví dụ hoàn chỉnh

#include <bits/stdc++.h>
using namespace std;
int main() {
    int arr[] = {3, 5, 8, 1, 9};
    set<int> ch(arr, arr + 5);
    for (auto i = ch.crbegin(); i != ch.crend(); i++)
        cout << *i << " ";
    return 0;
}

Kết quả

9 8 5 3 1