본문 바로가기

algorithm/이론

(C++ STL) lower_bound, upper_bound

lower_bound( begin(), end(), value);

upper_bound( begin(), end(), value);

lower_bound 란?

  • begin()에서 end()의 범위 중에서 value값 이상이 나타나는 가장 작은 이터레이터를 반환하는 것입니다.
  • value가 존재 하지 않는다면 value보다 큰 값중 가장 작은 값이 나타나는 이터레이터를 반환합니다.
  • algorithm 헤더 안에 존재합니다.

[코드]

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> v;

int main()
{
	v.push_back(10);
	v.push_back(20);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);

	int lower_index = lower_bound(v.begin(), v.end(), 20) - v.begin();
	auto lower = lower_bound(v.begin(), v.end(), 20);

	cout <<"index : " <<  lower_index << endl;
	cout << "value : " << *lower << endl;

	return 0;
}

[출력]

index : 1
value : 20

upper_bound 란?

  • begin()에서 end()의 범위 중에서 value 초과 값이 나타나는 가장 작은 이터레이터를 반환하는 것입니다.
  • value가 존재 하지 않는다면 value보다 큰 값중 가장 작은 값이 나타나는 이터레이터를 반환합니다.
  • algorithm 헤더 안에 존재합니다.

[코드]

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> v;

int main()
{
	v.push_back(10);
	v.push_back(20);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);

	int upper_index = upper_bound(v.begin(), v.end(), 20) - v.begin();
	auto upper = upper_bound(v.begin(), v.end(), 20);

	cout <<"index : " <<  upper_index << endl;
	cout << "value : " << *upper << endl;

	return 0;
}

[출력]

index : 3
value : 30

 

'algorithm > 이론' 카테고리의 다른 글

서로소 집합(Disjoint Set, Union-Find)  (0) 2021.04.15
최소 신장 트리(Minimum Spanning Tree)  (0) 2021.04.14
(C++ STL) priority_queue  (0) 2020.10.18
이분 탐색  (0) 2020.06.08