std::map::crbegin
#include <map>
const_reverse_iterator crbegin() const noexcept;
Trả về một const_reverse_iterator trỏ đến phần tử cuối cùng trong std::map. crbegin()
là viết tắt của "constant reverse begin".
Tham số
Không có tham số
Giá trị trả về
- const_reverse_iterator: Trả về một const_reverse_iterator trỏ đến phần tử cuối cùng của std::map. const_reverse_iterator chỉ cho phép đọc giá trị, không cho phép thay đổi.
Đặc điểm
- 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 (cókey
lớn nhất), nhưng chỉ được phép đọc, không được sửa đổi giá trị. - 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. - Kết hợp với
crend()
:crbegin()
thường được sử dụng cùng vớicrend()
để duyệt ngược qua toàn bộ std::map.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). - Phân biệt với
rbegin()
:rbegin()
trả về reverse_iterator (có thể đọc và ghi nhưng không được thay đổikey
), trong khicrbegin()
trả về const_reverse_iterator (chỉ đọc). - Không thay đổi std::map: Gọi
crbegin()
không làm thay đổi nội dung của std::map. - Phần tử cuối cùng theo thứ tự: Vì std::map lưu trữ các phần tử theo thứ tự của
key
, phần tử cuối cùng màcrbegin()
trỏ tới là phần tử cókey
lớn nhất (theo tiêu chí so sánh của map). - Độ phức tạp:
O(1)
- thời gian hằng số.
Ví dụ
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> mymap = {
{"apple", 1},
{"banana", 2},
{"orange", 3}
};
std::cout << "mymap in reverse order (read-only):\n";
for (auto crit = mymap.crbegin(); crit != mymap.crend(); ++crit) {
std::cout << crit->first << ": " << crit->second << '\n'; // Chỉ đọc giá trị, không thể thay đổi
}
// Output:
// mymap in reverse order (read-only):
// orange: 3
// banana: 2
// apple: 1
return 0;
}
#include <iostream>
#include <map>
#include <algorithm>
int main() {
std::map<int, std::string> mymap = {
{1, "one"},
{2, "two"},
{3, "three"},
{4, "four"},
{5, "five"}
};
// Tìm key lớn nhất sử dụng crbegin()
auto it = mymap.crbegin();
if (it != mymap.crend()) {
std::cout << "Largest key: " << it->first << std::endl; // Output: Largest key: 5
}
return 0;
}
Các hàm liên quan
crend | Trả về một const_reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của std::map |
begin | Trả về một iterator trỏ đến phần tử đầu tiên trong std::map |
rbegin | Trả về một reverse_iterator trỏ đến phần tử cuối cùng trong std::map |