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::cbegin() và multimap::cend() 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::cbegin() là gì?
multimap::cbegin() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. Đây là hàm begin hằng (constant begin). Hàm trả về iterator hằng (const_iterator) trỏ đến phần tử đầu tiên trong multimap. Iterator trả về là const, không thể dùng để sửa đổi nội dung. Chúng ta có thể dùng chúng để duyệt qua các phần tử bằng cách tăng/giảm iterator.
Cú pháp
multi.cbegin();
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ử đầu tiên của container.
Hàm multimap::cend() là gì?
multimap::cend() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. Đây là hàm end hằng (constant end). Hàm trả về iterator hằng trỏ đến vị trí sau phần tử cuối cùng (past-the-end) trong multimap.
Iterator trả về là const, không thể dùng để sửa đổi nội dung. Chúng ta dùng chúng để duyệt qua các phần tử.
multimap::cbegin() và multimap::cend() thường dùng cùng nhau để duyệt qua toàn bộ container bằng cách xác định đầu và cuối của phạm vi.
Cú pháp
multi.cend();
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í sau phần tử cuối cùng 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.cbegin();
cout << "Phần tử đầu tiên trong multimap: ";
cout << "{" << it->first << ", " << it->second << "}\n";
cout << "\nCác phần tử trong multimap:\n";
cout << "KEY\tELEMENT\n";
for (auto i = mul.cbegin(); i != mul.cend(); i++) {
cout << i->first << "\t" << i->second << endl;
}
return 0;
}
Kết quả
Phần tử đầu tiên trong multimap: {1, 50}
Các phần tử trong multimap:
KEY ELEMENT
1 50
1 40
1 10
2 30
2 20
5 60