Trong bài viết này, chúng ta sẽ thảo luận về hàm set::equal_range() trong C++ STL, cú pháp, cách hoạt động và giá trị trả về.
Set trong C++ STL là gì?
Set trong C++ STL là container chứa các phần tử duy nhất theo thứ tự chung. Set bắt buộc các phần tử duy nhất vì giá trị của phần tử xác định bản thân phần tử. Một khi đã thêm giá trị vào set container thì sau đó không thể sửa đổi, tuy nhiên vẫn có thể xóa hoặc thêm giá trị vào set. Set được sử dụng như cây tìm kiếm nhị phân.
set::equal_range() là gì?
equal_range() là hàm built-in trong C++ STL, được định nghĩa trong header <set>. Hàm trả về phạm vi (range) của set container chứa giá trị truyền làm tham số. Do set chứa các giá trị duy nhất, giá trị tương đương trong phạm vi tìm được sẽ chỉ có một. Nếu giá trị không có trong container, phạm vi sẽ bằng 0, với cả hai iterator trỏ đến vị trí đầu tiên.
Cú pháp
Set1.equal_range(const type_t& value);
Tham số
Hàm nhận một tham số: phần tử cần tìm.
Giá trị trả về
Trả về pair (cặp iterator) hoặc phạm vi iterator từ lower bound của container đến phần tử cần tìm.
Ví dụ
Input: set<int> myset = {10, 20, 30, 40}; Output: lower bound of 30 is 30
Ví dụ hoàn chỉnh
#include <bits/stdc++.h>
using namespace std;
int main() {
set<int> mySet;
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
mySet.insert(40);
mySet.insert(50);
cout << "Elements before applying range() Function : ";
for (auto i = mySet.begin(); i != mySet.end(); i++)
cout << *i << " ";
auto i = mySet.equal_range(30);
cout << "\nlower bound of 30 is " << *i.first;
cout << "\nupper bound of 30 is " << *i.second;
i = mySet.equal_range(40);
cout << "\nlower bound of 40 is " << *i.first;
cout << "\nupper bound of 40 is " << *i.second;
i = mySet.equal_range(10);
cout << "\nlower bound of 10 is " << *i.first;
cout << "\nupper bound of 10 is " << *i.second;
return 0;
}
Kết quả
Elements before applying range() Function : 10 20 30 40 50 lower bound of 30 is 30 upper bound of 30 is 40 lower bound of 40 is 40 upper bound of 40 is 50 lower bound of 10 is 10 upper bound of 10 is 20