Chuyển tới nội dung chính

std::set::crbegin

#include <set>

const_reverse_iterator crbegin() const noexcept;

Trả về một const_reverse_iterator trỏ đến phần tử cuối cùng trong std::set. crbegin() là viết tắt của "constant reverse begin".

Tham số

Không có tham số

Giá trị trả về

  • Trả về một const_reverse_iterator trỏ đến phần tử cuối cùng của std::set. const_reverse_iterator chỉ cho phép đọc giá trị, không cho phép thay đổi.

Đặc điểm

  1. Duyệt ngược và chỉ đọc: crbegin() cho phép bạn duyệt các phần tử theo thứ tự đảo ngược, bắt đầu từ phần tử cuối cùng, nhưng chỉ được phép đọc, không được sửa đổi giá trị.
  2. noexcept: crbegin() được đánh dấu là noexcept, nghĩa là nó được đảm bảo không ném ra ngoại lệ nào.
  3. Kết hợp với crend(): crbegin() thường được sử dụng cùng với crend() để duyệt ngược qua toàn bộ std::set. crend() trả về const_reverse_iterator trỏ đến phần tử "past-the-end" ở phía trước phần tử đầu tiên (theo chiều duyệt thông thường).
  4. Phân biệt với rbegin(): rbegin() trả về reverse_iterator (có thể đọc và ghi nhưng không được thay đổi để đảm bảo tính sắp xếp), trong khi crbegin() trả về const_reverse_iterator (chỉ đọc).
  5. Không thay đổi std::set: Gọi crbegin() không làm thay đổi nội dung của std::set.
  6. Phần tử cuối cùng theo thứ tự:std::set lưu trữ các phần tử theo thứ tự, phần tử cuối cùng mà crbegin() trỏ tới là phần tử lớn nhất (theo tiêu chí so sánh của set).
  7. Độ phức tạp: O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <set>
#include <algorithm>

int main() {
std::set<int> myset = {1, 2, 3, 4, 5};

// Tìm giá trị lớn nhất sử dụng crbegin()
auto it = myset.crbegin();

if (it != myset.crend()) {
std::cout << "Largest element: " << *it << std::endl; // Output: Largest element: 5
}

return 0;
}

Các hàm liên quan

beginTrả về một iterator trỏ đến phần tử đầu tiên trong std::set
crendTrả về một const_reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của std::set
rbeginTrả về một reverse_iterator trỏ đến phần tử cuối cùng trong std::set