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

Giới hạn trên và giới hạn dưới cho vectơ không tăng trong C ++


Trong bài viết này, chúng ta sẽ thảo luận về vector ::upper_bound () và vector ::Lower_bound () cho một mảng được sắp xếp theo thứ tự không tăng trong C ++ STL.

Các vectơ tương tự như các mảng động; chúng có khả năng tự sửa đổi kích thước của nó bất cứ khi nào một giá trị được chèn vào hoặc xóa khỏi vùng chứa nơi chúng tôi đang lưu trữ giá trị.

Trong một Vectơ, giới hạn dưới trả về một trình vòng lặp trỏ đến phần tử đầu tiên trong phạm vi không so sánh giá trị đã cho. Giới hạn trên trả về một phần tử trỏ trình vòng lặp trong phạm vi nhỏ hơn giá trị đã cho.

Đầu vào

30 30 30 20 20 20 10 10

Đầu ra

Lower bound of 20= 3
Upper bound of 20= 6

Đầu vào

9 9 8 8 8 7 7 7 6 6 6 6

Đầu ra

Lower bound of 7= 5
Upper bound of 7= 8

Giá trị trả về

Nó trả về một trình vòng lặp trỏ đến phần tử đầu tiên của phạm vi và cũng trả về và trình vòng lặp chỉ đến phần tử cuối cùng của phạm vi.

Phương pháp tiếp cận có thể được tuân theo

  • Đầu tiên, chúng tôi khởi tạo vectơ.

  • Sau đó, chúng tôi sắp xếp phần tử vectơ theo thứ tự không tăng dần.

  • Sau đó, chúng tôi tìm thấy giới hạn dưới của nó.

  • Sau đó, chúng tôi tìm thấy giới hạn trên của nó.

  • Cuối cùng, chúng tôi in cả hai giới hạn.

Bằng cách sử dụng phương pháp trên, chúng ta có thể tìm ra cận dưới và cận trên của bất kỳ vectơ nào, cần phải sắp xếp vectơ để tìm cận dưới và cận trên. Nếu vectơ không được sắp xếp, thì chúng tôi không thể tìm thấy giới hạn của nó

Ví dụ

Chương trình
/ / C++ program to demonstrate the working of lower bound and upper bound
#include<iosteam.h>
#include<vector.h>
Using namespace std;
int main ( ){
   int vect[ ] = {13,13,13,16,16,16,17,17,17,17,18,18}
   vector<int> v(vect, vect+8);
   sort (v.begin( ), v.end( ), greater<int>( ));
   cout<< “ \n Sorted Vector: ”;
   for( auto i = vect.begin( ), i =! vect.end( ), ++i)
      vector<int> iterator low, up;
   low = lower_bound (v.begin( ), v.end( ), 17);
   up = upper_bound (v.begin( ), v.end( ), 17);
   cout<<” Lower bound” << (lower – v.begin( ))<< “ \n”;
   cout<< “ Upper bound “<< (upper – v,begin( ))<<”\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

Sorted Vector: 18 18 17 17 17 17 16 16 16 13 13 13
Lower bound = 2
Upper bound = 6

Ví dụ

#include<iosteam.h>
#include<vector.h>
Using namespace std;
int main ( ){
   int vect[ ] = {5,5,5,5,7,7 7,8,8,8,8,9,9,9,10,10}
   vector<int> v(vect, vect+16);
   sort (v.begin( ), v.end( ));
   cout<< “ \n Sorted Vector: ”;
   for( auto i = vect.begin( ), i =!vect.end( ), ++i)
      vector<int> iterator low, up;
   low = lower_bound (v.begin( ), v.end( ), 8);
   up = upper_bound (v.begin( ), v.end( ), 8);
   cout<<” Lower bound” << (lower – v.begin( ))<< “ \n”;
   cout<< “ Upper bound “<< (upper – v,begin( ))<<”\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

Sorted Vector: 10 10 9 9 9 8 8 8 8 7 7 7 5 5 5 5
Lower bound = 5
Upper bound = 9