Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 증가하지 않는 벡터의 상한 및 하한


이 기사에서는 C++ STL에서 증가하지 않는 순서로 정렬된 배열에 대한 vector::upper_bound() 및 vector::lower_bound()에 대해 설명합니다.

벡터는 동적 배열과 유사합니다. 값을 저장하는 컨테이너에 값을 삽입하거나 제거할 때마다 크기 자체를 수정할 수 있습니다.

Vector에서 하한은 지정된 값을 비교하지 않는 범위의 첫 번째 요소를 가리키는 반복자를 반환합니다. 상한은 주어진 값보다 작은 범위의 반복자를 가리키는 요소를 반환합니다.

입력

30 30 30 20 20 20 10 10

출력

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

입력

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

출력

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

반환 값

범위의 첫 번째 요소를 가리키는 반복자를 반환하고 범위의 마지막 요소를 가리키는 반복자를 반환합니다.

따를 수 있는 접근 방식

  • 먼저 벡터를 초기화합니다.

  • 그런 다음 벡터 요소를 증가하지 않는 순서로 정렬합니다.

  • 그런 다음 하한을 찾습니다.

  • 그런 다음 상한을 찾습니다.

  • 마침내 우리는 두 경계를 모두 인쇄합니다.

위의 접근 방식을 사용하여 벡터의 하한과 상한을 찾을 수 있으므로 벡터를 정렬하여 하한과 상한을 찾아야 합니다. 벡터가 정렬되지 않으면 경계를 찾을 수 없습니다.

예시

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

출력

위의 코드를 실행하면 다음 출력이 생성됩니다.

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

예시

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

출력

위의 코드를 실행하면 다음 출력이 생성됩니다.

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