STL - Algorithm/Algorithm - Binary Search
Algorithm - equal_range()
Programmer.
2017. 6. 30. 01:12
원형)
1 2 3 4 5 6 7 8 9 10 | //기본형 template <class ForwardIterator, class T> pair<ForwardIterator,ForwardIterator> equal_range (ForwardIterator first, ForwardIterator last, const T& val); //사용자 정의형 template <class ForwardIterator, class T, class Compare> pair<ForwardIterator,ForwardIterator> equal_range (ForwardIterator first, ForwardIterator last, const T& val, Compare comp); | cs |
의미)
[Iterator first, Iterator last)사이에 있는 모든 데이터들에 대한 subrange를 리턴합니다.
소스)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> #include <algorithm> #include <vector> void print(std::vector<int> Target_Vector) { for (std::vector<int>::iterator IterPos = Target_Vector.begin(); IterPos != Target_Vector.end(); ++IterPos) std::cout << *IterPos << " "; std::cout << std::endl; } void main() { std::vector<int> Vector = { 5,10,15,20,25,30 }; std::pair<std::vector<int>::iterator, std::vector<int>::iterator> Pair; Pair = std::equal_range(Vector.begin(), Vector.end(), 5); print(Vector); std::cout << "Pair First -->" << *Pair.first << std::endl; std::cout << "Pair Second -->" << *Pair.second << std::endl; } | cs |
내용)
first로 lower_bound(x,y,z)의 리턴값을, second로 upper_bound(x,y,z)의 리턴값을 가진 pair를 리턴합니다.
결과)