Trong bài viết này, chúng ta sẽ thảo luận về set::upper_bound() 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::upper_bound() là gì?
upper_bound() là hàm built-in trong C++ STL được khai báo trong header <set>. Hàm trả về iterator trỏ đến upper bound (giá trị lớn hơn ngay lập tức) của giá trị cần tìm. Iterator trỏ đến phần tử ngay sau giá trị đó.
Cú pháp
name_of_set.upper_bound(const type_t& value);
Tham số
Hàm nhận một tham số: giá trị cần tìm upper bound.
Giá trị trả về
Trả về iterator trỏ đến phần tử ngay tiếp theo lớn hơn giá trị truyền vào.
Ví dụ
Input: set<int> myset = {1, 2, 3, 4, 5}; Myset.upper_bound(3); Output: Upper bound = 4
Ví dụ hoàn chỉnh 1
#include <bits/stdc++.h>
using namespace std;
int main() {
set<int> Set;
Set.insert(9);
Set.insert(7);
Set.insert(5);
Set.insert(3);
Set.insert(1);
cout << "Elements are : ";
for (auto i = Set.begin(); i != Set.end(); i++)
cout << *i << " ";
auto i = Set.upper_bound(5);
cout << "\nupper bound of 5 in the set is: ";
cout << (*i) << endl;
i = Set.upper_bound(1);
cout << "upper bound of 1 in the set is: ";
cout << (*i) << endl;
return 0;
}
Kết quả
upper bound of 5 in the set is: 7 upper bound of 1 in the set is: 3
Ví dụ hoàn chỉnh 2
#include <iostream>
#include <set>
int main() {
std::set<int> Set;
std::set<int>::iterator one, end;
for (int i = 1; i < 10; i++)
Set.insert(i * 10);
one = Set.lower_bound(20);
end = Set.upper_bound(40);
Set.erase(one, end); // 10 20 70 80 90
std::cout << "Elements are: ";
for (std::set<int>::iterator i = Set.begin(); i != Set.end(); ++i)
std::cout << ' ' << *i;
std::cout << '\n';
return 0;
}
Kết quả
Elements are : 10 50 60 70 80 90