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

std::list::rbegin

#include <list>

      reverse_iterator rbegin() noexcept;
const_reverse_iterator rbegin() const noexcept;

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

Tham số

Không có tham số

Giá trị trả về

  • reverse_iterator (phiên bản không const): Trả về một reverse_iterator có thể đọc và ghi, cho phép bạn thay đổi giá trị các phần tử khi duyệt ngược.
  • const_reverse_iterator (phiên bản const): Trả về một const_reverse_iterator, chỉ cho phép bạn đọc giá trị các phần tử, không thể thay đổi chúng. Phiên bản này được sử dụng khi std::list là một đối tượng const.

Đặc điểm

  1. Duyệt ngược: rbegin() 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.
  2. Dereferencing: Khi sử dụng reverse iterator, toán tử * (dereference) sẽ trả về giá trị của phần tử hiện tại mà iterator đang trỏ tới (phần tử cuối cùng khi bắt đầu với rbegin()).
  3. Toán tử ++: Toán tử ++ trên reverse iterator sẽ di chuyển iterator đến phần tử trước đó trong std::list (theo thứ tự thông thường).
  4. Kết hợp với rend(): rbegin() thường được sử dụng cùng với rend() để duyệt ngược qua toàn bộ std::list. rend() trả về reverse iterator trỏ đến phần tử "past-the-end" ở phía trước phần tử đầu tiên.
  5. noexcept: Cả hai phiên bản của rbegin() đều được đánh dấu là noexcept, nghĩa là chúng được đảm bảo không ném ra ngoại lệ nào.
  6. Không làm thay đổi danh sách: Gọi rbegin() không làm thay đổi nội dung hay trạng thái của std::list.
  7. Độ phức tạp: O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <list>
#include <algorithm>

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

// Tìm phần tử đầu tiên từ cuối lên có giá trị lớn hơn 2
auto it = std::find_if(mylist.rbegin(), mylist.rend(), [](int n){ return n > 2; });

if (it != mylist.rend()) {
std::cout << "First element from the end greater than 2: " << *it << '\n'; // Output: 3
}

return 0;
}

Các hàm liên quan

rendTrả về một reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của std::list (theo thứ tự thông thường)
beginTrả về một iterator trỏ đến phần tử đầu tiên trong list
endTrả về một iterator trỏ đến vị trí sau phần tử cuối cùng trong std::list