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

std::deque::crend

#include <deque>

Trả về một const_reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của deque.

const_reverse_iterator crend() const noexcept;

Tham số

Không có tham số

Giá trị trả về

  • Trả về một const_reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của deque (theo thứ tự thông thường). Đây là một vị trí "past-the-end" theo hướng ngược lại. const_reverse_iterator chỉ cho phép đọc giá trị, không cho phép thay đổi.

Đặc điểm

  1. crend() ("constant reverse end") trả về const_reverse_iterator trỏ đến phần tử trước phần tử đầu tiên (theo thứ tự thông thường). Đây là một vị trí "past-the-end" theo hướng ngược lại. Dereferencing (toán tử *) iterator này sẽ dẫn đến hành vi không xác định (undefined behavior).
  2. Iterator trả về bởi crend()const_reverse_iterator, nghĩa là không thể thay đổi giá trị của các phần tử trong deque thông qua iterator này.
  3. crend() được đánh dấu là noexcept, nghĩa là nó được đảm bảo không ném ra ngoại lệ nào.
  4. crend() đánh dấu điểm kết thúc khi bạn duyệt ngược deque bằng crbegin(). Khi const_reverse_iterator bằng crend(), bạn đã duyệt qua toàn bộ deque theo chiều ngược lại.
  5. Khi crbegin()crend() bằng nhau, điều đó có nghĩa là deque rỗng.
  6. rend() trả về reverse_iterator (có thể đọc và ghi), trong khi crend() trả về const_reverse_iterator (chỉ đọc).
  7. Gọi crend() không làm thay đổi nội dung của deque.
  8. Độ phức tạp: O(1) - Thời gian hằng số.

Ví dụ

#include <iostream>
#include <deque>

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

std::cout << "Các phần tử trong deque khi duyệt ngược:\n";
for (auto it = dq.crbegin(); it != dq.crend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;

return 0;
}

Các hàm liên quan

endTrả về một iterator trỏ đến phần tử sau phần tử cuối cùng của deque
crbeginTrả về một const_reverse_iterator trỏ đến phần tử cuối cùng của deque
rendTrả về một reverse iterator trỏ đến phần tử trước phần tử đầu tiên của deque