std::set::rbegin
#include <set>
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 trong std::set. rbegin()
là viết tắt của "reverse begin".
Tham số
Không có tham số
Giá trị trả về
- 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. Tuy nhiên, bạn không được phép thay đổi giá trị của phần tử trong std::set theo cách làm thay đổi thứ tự sắp xếp.
- const_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::set là một đối tượng
const
.
Đặc điểm
- 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. - 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ớirbegin()
). - Toán tử ++: Toán tử ++ trên reverse iterator sẽ di chuyển iterator đến phần tử trước đó trong std::set (theo thứ tự thông thường).
- Kết hợp với
rend()
:rbegin()
thường được sử dụng cùng vớirend()
để duyệt ngược qua toàn bộ std::set.rend()
trả về reverse iterator trỏ đến phần tử "past-the-end" ở phía trước phần tử đầu tiên. - 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. - Không làm thay đổi set: Gọi
rbegin()
không làm thay đổi nội dung hay trạng thái của std::set. - Phần tử cuối cùng theo thứ tự: Vì std::set lưu trữ phần tử theo thứ tự, phần tử cuối cùng mà
rbegin()
trỏ tới sẽ là phần tử lớn nhất (theo tiêu chí so sánh của set). - Độ 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 phần tử đầu tiên từ cuối lên có giá trị nhỏ hơn 4
auto it = std::find_if(myset.rbegin(), myset.rend(), [](int n){ return n < 4; });
if (it != myset.rend()) {
std::cout << "First element from the end less than 4: " << *it << '\n'; // Output: 3
}
return 0;
}
Các hàm liên quan
rend | Trả về một reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của std::set |
begin | Trả về một iterator trỏ đến phần tử đầu tiên trong std::set |
end | Trả về một iterator trỏ đến vị trí sau phần tử cuối cùng trong std::set |