Trong bài viết này, chúng ta sẽ thảo luận về cách hoạt động, cú pháp và các ví dụ của hàm multimap::crbegin() và multimap::crend() trong C++ STL.
Multimap trong C++ STL là gì?
Multimap là container liên kết, tương tự như map. Nó lưu trữ các phần tử dạng cặp key-value theo thứ tự cụ thể. Multimap cho phép nhiều phần tử có cùng một key. Dữ liệu luôn được sắp xếp theo key.
Hàm multimap::crbegin() là gì?
multimap::crbegin() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. crbegin() nghĩa là constant reverse begin (đầu ngược hằng), là ngược của cbegin(). Hàm trả về iterator hằng trỏ đến phần tử cuối cùng của multimap. Iterator này không thể dùng để sửa đổi multimap, chỉ dùng để duyệt.
Cú pháp
mutliMap_name.crbegin();
Tham số
Hàm này không nhận tham số nào.
Giá trị trả về
Trả về iterator trỏ đến phần tử cuối cùng của container.
Hàm multimap::crend() là gì?
multimap::crend() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. crend() nghĩa là constant reverse end iterator (cuối ngược hằng), là ngược của cend(). Hàm trả về iterator hằng trỏ đến vị trí ngay trước phần tử đầu tiên (preceding first) của container. Iterator này không thể dùng để sửa đổi, chỉ dùng để duyệt.
Cú pháp
newmultimap.crend();
Tham số
Hàm này không nhận tham số nào.
Giá trị trả về
Trả về iterator trỏ đến vị trí trước phần tử đầu tiên của container.
Ví dụ minh họa
#include <bits/stdc++.h>
using namespace std;
int main() {
// Tạo container
multimap<int, int> mul;
// Chèn bằng emplace_hint
mul.emplace_hint(mul.begin(), 1, 10);
mul.emplace_hint(mul.begin(), 2, 20);
mul.emplace_hint(mul.begin(), 2, 30);
mul.emplace_hint(mul.begin(), 1, 40);
mul.emplace_hint(mul.begin(), 1, 50);
mul.emplace_hint(mul.begin(), 5, 60);
auto it = mul.crbegin();
cout << "Phần tử cuối cùng dùng crbegin(): {" << it->first << ", " << it->second << "}\n";
cout << "\nCác phần tử trong multimap (duyệt ngược):\n";
cout << "KEY\tELEMENT\n";
for (auto i = mul.crbegin(); i != mul.crend(); i++) {
cout << i->first << "\t" << i->second << endl;
}
return 0;
}
Kết quả
Phần tử cuối cùng dùng crbegin(): {5, 60}
Các phần tử trong multimap (duyệt ngược):
KEY ELEMENT
5 60
2 20
2 30
1 10
1 40
1 50