Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm multimap::find() trong C++ STL


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