Trong bài này chúng ta thảo luận về multimap::find() trong C++ STL.
Multimap trong C++ STL là gì?
Multimap là container liên hợp, tương tự map nhưng cho phép nhiều phần tử có cùng khóa (key). Dữ liệu luôn được sắp xếp theo khóa.
multimap::find() là gì?
Hàm built-in trong <map>, tìm phần tử liên hợp với khóa K. Trả về iterator trỏ đến phần tử đầu tiên có khóa đó. Nếu không tìm thấy, trả về end().
Cú pháp
iterator multimap_name.find(key);
Tham số
key: khóa cần tìm trong container.
Giá trị trả về
Iterator trỏ đến vị trí khóa trong container.
Ví dụ 1
multimap<char, int> mp;
mp.insert({'A', 22});
mp.insert({'B', 78});
mp.insert({'C', 66});
mp.insert({'D', 81});
mp.insert({'E', 43});
mp.find('D'); // Trả về iterator trỏ đến ('D', 81)
Đầu ra: 81
Ví dụ 2
multimap<int, int> mp;
mp.insert({1, 15});
mp.insert({2, 18});
mp.insert({3, 45});
mp.insert({4, 66});
mp.find(4); // Trỏ đến (4, 66)
Đầu ra: 66
Cách sử dụng
- Khởi tạo multimap
- Chèn phần tử với khóa
- Dùng find() để lấy iterator
- In khóa và giá trị
Ví dụ mã nguồn 1
#include <iostream>
#include <map>
using namespace std;
int main() {
multimap<char, int> mp;
mp.insert({'b', 23});
mp.insert({'a', 46});
mp.insert({'c', 78});
mp.insert({'e', 11});
mp.insert({'d', 34});
cout << "Các phần tử từ khóa 'c' trở đi:\n";
cout << "Khóa\tGiá trị\n";
for (auto it = mp.find('c'); it != mp.end(); it++)
cout << it->first << "\t" << it->second << '\n';
return 0;
}
Kết quả
Khóa Giá trị c 78 d 34 e 11
Ví dụ mã nguồn 2
#include <iostream>
#include <map>
using namespace std;
int main() {
multimap<int, int> mp;
mp.insert({1, 33});
mp.insert({2, 66});
mp.insert({3, 55});
mp.insert({4, 11});
mp.insert({5, 44});
cout << "Các phần tử từ khóa 4:\n";
for (auto it = mp.find(4); it != mp.end(); it++)
cout << it->first << "\t" << it->second << '\n';
return 0;
}
Kết quả
Khóa Giá trị 4 11 5 44