std::deque::rend
#include <deque>
reverse_iterator rend();
const_reverse_iterator rend() const;
Trả về một reverse iterator trỏ đến phần tử trước phần tử đầu tiên của deque.
Tham số
Không có tham số
Giá trị trả về
- Trả về một reverse iterator trỏ đến phần tử trước phần tử đầu tiên của deque.
reverse_iterator
- Trả về một iterator đặc biệt trỏ tới phần tử nằm trước phần tử đầu tiên trong deque.
- Dùng để đánh dấu điểm kết thúc khi duyệt ngược qua các phần tử.
const_reverse_iterator
- Trả về một iterator không cho phép chỉnh sửa nội dung của deque.
Đặc điểm
rend()
trả về 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 iterator này sẽ dẫn đến hành vi không xác định (undefined behavior).rend()
đánh dấu điểm kết thúc khi bạn duyệt ngược deque bằngrbegin()
. Khi reverse iterator bằngrend()
, bạn đã duyệt qua toàn bộ deque theo chiều ngược lại.- Thường được sử dụng trong các vòng lặp duyệt ngược khi kết hợp với
rbegin()
. - Nếu deque bị thay đổi kích thước trong khi iterator đang được sử dụng, iterator sẽ trở nên không hợp lệ.
- Các iterator như
rend()
rất nhẹ và hiệu quả vì chúng không sao chép toàn bộ cấu trúc dữ liệu. - Khi
rbegin()
vàrend()
bằng nhau, điều đó có nghĩa là deque rỗng. - Toán tử
++
trên reverse iterator (trong vòng lặp từrbegin()
đếnrend()
) sẽ di chuyển iterator đến phần tử trước đó trong deque (theo thứ tự thông thường). - Gọi
rend()
không làm thay đổi nội dung của deque. - Độ phức tạp:
O(1)
- Thời gian hằng số.
Ví dụ
Duyệt ngược qua deque
#include <iostream>
#include <deque>
int main() {
// Tạo một deque với các phần tử
std::deque<int> myDeque = {1, 2, 3, 4, 5};
// Duyệt ngược qua deque bằng reverse_iterator
std::cout << "Duyệt ngược qua deque: ";
for (auto it = myDeque.rbegin(); it != myDeque.rend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
Kiểm tra deque có rỗng hay không
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque = {1, 2, 3, 4, 5};
// Kiểm tra deque có rỗng hay không sử dụng rbegin() và rend()
if (myDeque.rbegin() == myDeque.rend()) {
std::cout << "Deque is empty\n";
} else {
std::cout << "Deque is not empty\n";
}
return 0;
}
Các hàm liên quan
rbegin | Trả về một reverse iterator trỏ đến phần tử cuối cùng của deque |
front | Trả về tham chiếu đến phần tử đầu tiên trong deque |
begin | Trả về một iterator trỏ đến phần tử đầu tiên của deque |
end | Trả về một iterator trỏ đến phần tử sau phần tử cuối cùng của deque |