std::is_heap_until
cppreference.com
[] |
Google. . , . , . |
<metanoindex/>
<tbody> </tbody> template< class RandomIt > RandomIt is_heap_until( RandomIt first, RandomIt last ); |
(1) | ( C++11) |
template< class RandomIt, class Compare > RandomIt is_heap_until( RandomIt first, RandomIt last, Compare comp ); |
(2) | ( C++11) |
[first, last) first ' . operator< , comp.:
Examines the range
[first, last) and finds the largest range beginning at first which is heap. The first version of the function uses operator< to compare the elements, the second uses the given comparison function comp.| first, last | ||
| comp | (.. , Compare), true, "", .:
| |
-RandomIt RandomAccessIterator.
| ||
first ' . , it , [first, it) ' .:
The upper bound of the largest range beginning at
first which is heap. That is, the last iterator it for which range [first, it) is heap.'
[f,l), :*fstd::push_heap()std::pop_heap()
, .
#include <iostream>
#include <algorithm>
int main()
{
std::vector<int> v { 3, 1, 4, 1, 5, 9 };
std::make_heap(v.begin(), v.end());
// probably mess up the heap
v.push_back(2);
v.push_back(6);
auto heap_end = std::is_heap_until(v.begin(), v.end());
std::cout << "all of v: ";
for (auto i : v) std::cout << i << ' ';
std::cout << '\n';
std::cout << "only heap: ";
for (auto i = v.begin(); i != heap_end; ++i) std::cout << *i << ' ';
std::cout << '\n';
}
:
all of v: 9 5 4 1 1 3 2 6
only heap: 9 5 4 1 1 3 2
.
| , ( ) |