STL - Algorithm/Algorithm - Sorting
Algorithm - is_sorted_until()
Programmer.
2017. 6. 30. 18:56
원형)
1 2 3 4 5 6 7 8 | //기본형 template <class ForwardIterator> ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last); //사용자 정의형 template <class ForwardIterator, class Compare> ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last, Compare comp); | cs |
의미)
[Iterator first, ITerator last)사이의 데이터들 중에서 오름차순으로 정렬되지 않은 첫 원소를 리턴합니다.
소스)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <iostream> #include <algorithm> #include <vector> void Print(const std::vector<int>& target) { for (std::vector<int>::const_iterator iterPos = target.cbegin(); iterPos != target.cend(); iterPos++) std::cout << *iterPos << " "; std::cout << std::endl; } void main() { std::vector<int> vector = { 20,10,5,15 }; std::vector<int>::iterator iter; Print(vector); std::is_sorted_until(vector.begin(), vector.end()); Print(vector); do { std::prev_permutation(vector.begin(), vector.end()); std::cout << "Vector:"; Print(vector); iter = std::is_sorted_until(vector.begin(), vector.end()); std::cout << " (" << (iter - vector.begin()) << " elements sorted)\n"; } while (iter != vector.end()); std::cout << "the range is sorted!\n"; } | cs |
내용)
[Iterator first, ITerator last)사이의 데이터들 중에서 오름차순으로 정렬되지 않은 첫 원소를 리턴합니다. 범위내에 2개 미만의 원소가 있거나 모든 원소들이 정렬이 되어있으면 Iterator last를 리턴합니다.
결과)