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

Hàm set::equal_range() trong C++ STL


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