Computer >> Máy Tính >  >> Lập trình >> C ++

Đặt hàm upper_bound () trong C ++ STL

Trong bài viết này, chúng ta sẽ thảo luận về tập hợp ::upper_bound () trong C ++ STL, cú pháp, cách làm việc và giá trị trả về của chúng.

Đặt trong C ++ STL là gì?

Các bộ trong C ++ STL là các bộ chứa phải có các phần tử duy nhất theo thứ tự chung. Tập hợp phải có các phần tử duy nhất vì giá trị của phần tử xác định phần tử. Sau khi đã thêm một giá trị trong vùng chứa đã đặt thì không thể sửa đổi được, mặc dù chúng tôi vẫn có thể xóa hoặc thêm các giá trị vào tập hợp. Các tập hợp được sử dụng làm cây tìm kiếm nhị phân.

Set ::upper_bound () là gì?

upper_bound () là một hàm có sẵn trong C ++ STL được khai báo trong tệp tiêu đề . upper_bound () trả về một trình lặp tới giới hạn trên của giá trị có giới hạn trên mà chúng ta muốn tìm. Hàm trả về trình vòng lặp trỏ đến phần tử tiếp theo ngay lập tức của giá trị có giới hạn trên mà chúng tôi muốn tìm.

Cú pháp

name_of_set.upper_bound (const type_t &value);

Tham số

Hàm này chấp nhận một tham số, tức là giá trị có giới hạn trên được tìm thấy.

Giá trị trả về

Hàm này trả về một trình vòng lặp trỏ đến phần tử tiếp theo ngay lập tức lớn hơn giá trị

Ví dụ

Input: set<int> myset = {1, 2, 3, 4, 5};
   Myset.upper_bound(3);
Output: Upper bound = 4

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

upper bound of 5 in the set is: 7
upper bound of 1 in the set is: 3

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Elements are : 10 50 60 70 80 90