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à ví dụ của hàm multiset::equal_range() trong C++ STL.
multiset trong C++ STL là gì?
Multiset là container tương tự như set, nghĩa là lưu trữ giá trị dưới dạng khóa (keys) giống như set, theo một thứ tự xác định.
Trong multiset, giá trị được xác định bằng khóa giống như set. Khác biệt chính: set có khóa phân biệt (không có hai khóa giống nhau), multiset có thể có khóa trùng lặp.
Khóa multiset được dùng để triển khai cây tìm kiếm nhị phân.
multiset::equal_range() là gì?
multiset::equal_range() là hàm tích hợp sẵn trong C++ STL, định nghĩa trong header <set>. equal_range() lấy khoảng các phần tử bằng nhau trong container multiset.
Hàm trả về cặp giới hạn dưới và giới hạn trên của khoảng bao gồm tất cả phần tử trong container bằng với tham số truyền vào.
Cú pháp
ms_name.equal_range(value_type& val);
Tham số
Hàm chấp nhận một tham số:
- val - Giá trị cần tìm khoảng trong container.
Giá trị trả về
Hàm trả về một cặp (pair) gồm iterator lower bound và upper bound của các giá trị bằng val.
Ví dụ
Đầu vào
std::multiset<int> mymultiset = {1, 2, 2, 3, 4}; mymultiset.equal_range(2);
Kết quả
2 2
Ví dụ đầy đủ
#include <bits/stdc++.h>
using namespace std;
int main() {
multiset<int> check;
check.insert(10);
check.insert(20);
check.insert(30);
check.insert(40);
check.insert(50);
check.insert(60);
check.insert(70);
check.insert(80);
cout << "Các phần tử: ";
for (auto i = check.begin(); i != check.end(); i++)
cout << *i << " ";
// lower bound và upper bound
auto i = check.equal_range(30);
cout << "\nGiới hạn dưới của 30 là " << *i.first;
cout << "\nGiới hạn trên của 30 là " << *i.second;
// phần tử cuối
i = check.equal_range(20);
cout << "\nGiới hạn dưới của 20 là " << *i.first;
cout << "\nGiới hạn trên của 20 là " << *i.second;
i = check.equal_range(80);
cout << "\nGiới hạn dưới của 80 là " << *i.first;
cout << "\nGiới hạn trên của 80 là " << *i.second;
return 0;
}
Kết quả
Các phần tử: 10 20 30 40 50 60 70 80 Giới hạn dưới của 30 là 30 Giới hạn trên của 30 là 40 Giới hạn dưới của 20 là 20 Giới hạn trên của 20 là 30 Giới hạn dưới của 80 là 80 Giới hạn trên của 80 là 80