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

Hàm multimap::insert() 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::insert() 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::insert() là gì?

multimap::insert() là hàm built-in trong C++ STL, được định nghĩa trong header <map>. Hàm này chèn giá trị mới vào multimap và tăng kích thước container theo số phần tử chèn.

Khác với map (nếu key đã tồn tại thì không chèn), multimap cho phép nhiều phần tử cùng key. Khi chèn, phần tử sẽ được đặt tại vị trí đúng theo thứ tự key.

Cú pháp

// Chèn cặp key-value
multiMap_name.insert({key& k, value_type& val});

// Chèn với vị trí gợi ý
multiMap_name.insert(iterator& it, {key& k, value_type& val});

// Chèn phạm vi
multiMap_name.insert(iterator& position1, iterator& position2);

// Chèn từ initializer list
multimap_name.insert(initializer_list <value_type> il);

Tham số

  • k – Key liên kết với phần tử.
  • val – Giá trị cần chèn.
  • it – Iterator chỉ vị trí gợi ý chèn.
  • position1, position2 – Phạm vi [first, last) các phần tử cần chèn.
  • il – Initializer list chứa các phần tử khởi tạo.

Giá trị trả về

Trả về iterator trỏ đến phần tử mới chèn.

Ví dụ 1: Chèn tại key cho trước

#include <bits/stdc++.h>
using namespace std;

int main() {
    multimap<int, int> mul;
    
    mul.insert({1, 10});
    mul.insert({2, 20});
    mul.insert({3, 30});
    mul.insert({4, 40});
    mul.insert({5, 50});
    
    cout << "Các phần tử trong multimap:\n";
    cout << "KEY\tELEMENT\n";
    for (auto it = mul.begin(); it != mul.end(); ++it) {
        cout << it->first << '\t' << it->second << '\n';
    }
    
    return 0;
}

Kết quả

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

Ví dụ 2: Chèn sau một key cho trước

#include <bits/stdc++.h>
using namespace std;

int main() {
    multimap<int, int> mul;
    
    mul.insert({1, 10});
    mul.insert({2, 20});
    mul.insert({3, 30});
    mul.insert({5, 40});
    mul.insert({6, 50});
    
    // Tìm vị trí key 3
    auto i = mul.find(3);
    // Chèn {4, 90} sau vị trí key 3
    mul.insert(i, {4, 90});
    
    cout << "KEY\tELEMENT\n";
    for (auto itr = mul.begin(); itr != mul.end(); ++itr) {
        cout << itr->first << '\t' << itr->second << '\n';
    }
    
    return 0;
}

Kết quả

KEY	ELEMENT
1	10
2	20
3	30
4	90
5	40
6	50