조건 : 오름차순으로 정렬된 배열
upper_bound() : 찾으려는 값과 같거나 큰 숫자가 배열 몇 번째에서 처음 등장하는지 찾기 위함
lower_bound() : 찾으려는 값보다 큰 숫자가 배열 몇 번째에서 처음 등장하는지 찾기 위함
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector<int> v = {1,2,3,4,5,6,7,8};
int idx = upper_bound(v.begin(), v.end(), 5) - v.begin();
cout << idx << endl;
idx = lower_bound(v.begin(), v.end(), 5) - v.begin();
cout << idx << endl;
// 결과 : 5 (5보다 큰 6의 인덱스는 5)
4 (5와 같은 5의 인덱스는 4)
}