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

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

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::emplace_hint() 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::emplace_hint() là gì?

emplace_hint() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. Hàm này chèn phần tử mới vào multimap với một vị trí gợi ý (hint). Khác với emplace(), ở đây ta truyền thêm một iterator chỉ vị trí gợi ý để chèn. Hàm này cũng tăng kích thước container lên 1.

Cú pháp

multimap_name.emplace_hint(iterator pos, Args& val);

Tham số

  • pos – Iterator chỉ vị trí gợi ý chèn.
  • val – Phần tử cần chèn.

Giá trị trả về

Trả về iterator trỏ đến vị trí phần tử được chèn.

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(), 3, 30);
    mul.emplace_hint(mul.begin(), 1, 40);
    mul.emplace_hint(mul.begin(), 4, 50);
    mul.emplace_hint(mul.begin(), 5, 60);
    
    cout << "\nCác phần tử trong multimap:\n";
    cout << "KEY\tELEMENT\n";
    for (auto i = mul.begin(); i != mul.end(); i++) {
        cout << i->first << "\t" << i->second << endl;
    }
    
    return 0;
}

Kết quả

Các phần tử trong multimap:
KEY	ELEMENT
1	40
1	10
2	20
3	30
4	50
5	60