- algorithm[meta header]
- std[meta namespace]
- function template[meta id-type]
namespace std {
template <class RandomAccessIterator>
void sort_heap(RandomAccessIterator first,
RandomAccessIterator last); // (1) C++03
template <class RandomAccessIterator>
constexpr void sort_heap(RandomAccessIterator first,
RandomAccessIterator last); // (1) C++20
template <class RandomAccessIterator, class Compare>
void sort_heap(RandomAccessIterator first,
RandomAccessIterator last,
Compare comp); // (2) C++03
template <class RandomAccessIterator, class Compare>
constexpr void sort_heap(RandomAccessIterator first,
RandomAccessIterator last,
Compare comp); // (2) C++20
}
ヒープ化されたイテレータ範囲[first, last)
を並べ替える
RandomAccessIterator
はValueSwappable
の要件を満たしていること*first
の型はMoveConstructible
とMoveAssignable
の要件を満たしていること
[first,last)
は有効なヒープであること
ヒープ化されている [first,last)
をソートする
なし
最大で N log(N) 回比較する(N == last - first
)
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> v = {3, 1, 4};
std::make_heap(v.begin(), v.end());
// ヒープ化された範囲をソート
std::sort_heap(v.begin(), v.end());
std::for_each(v.begin(), v.end(), [](int x) {
std::cout << x << std::endl;
});
}
- std::sort_heap[color ff0000]
- std::make_heap[link make_heap.md]
1
3
4