The Wayback Machine - https://web.archive.org/web/20180522175057/http://ja.cppreference.com:80/w/cpp/algorithm/push_heap
名前空間
変種
操作

std::push_heap

提供: cppreference.com
< cpp‎ | algorithm

 
 
アルゴリズムライブラリ
実行ポリシー (C++17)
非変更シーケンス操作
(C++11)(C++11)(C++11)
(C++17)
変更シーケンス操作
未初期化記憶域の操作
分割操作
ソート操作
バイナリサーチ操作
集合操作 (ソート済み範囲に対する)
ヒープ操作
(C++11)
push_heap
最小/最大演算
(C++11)
(C++17)
順列
数値演算
C のライブラリ
 
ヘッダ <algorithm> で定義
template<class RandomIt >
void push_heap( RandomIt first, RandomIt last );
(1)
template<class RandomIt, class Compare >

void push_heap( RandomIt first, RandomIt last,

                Compare comp );
(2)
挿入範囲last-1によって定義されたヒープに位置[first, last-1)にある要素。関数の最初のバージョンは要素を比較するoperator<使用し、2番目はcomp与えられた比較関数を使用しています.
Original:
Inserts the element at the position last-1 into the heap defined by the range [first, last-1). The first version of the function uses operator< to compare the elements, the second uses the given comparison function comp.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

目次

[編集]パラメータ

first, last -
変更するヒープを定義する要素の範囲
Original:
the range of elements defining the heap to modify
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
comp - 比較関数. 最初の値が二つ目の値より小さい 場合、 ​trueを返します.

比較関数のシグネチャは以下と同等でなければなりません.

 bool cmp(const Type1 &a, const Type2 &b);

シグネチャはconstを含まなくても構いませんが, 比較関数は渡されたオブジェクトを変更してはなりません.
Type1 および Type2 は、どちらも RandomIt 型のオブジェクトの逆参照から暗黙に変換可能なものでなければなりません。 ​

型の要件
-
RandomItRandomAccessIterator の要件を満たさなければなりません。
-
The type of dereferenced RandomIt must meet the requirements of MoveAssignable and MoveConstructible.

[編集]値を返します

(なし)

[編集]複雑性

せいぜい 2×log(n)の比較どこN=std::distance(first, last).
Original:
At most 2×log(N) comparisons where N=std::distance(first, last).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集]ノート

'ヒープは、要素の範囲です[f,l)それは、次のプロパティがあります
Original:
A heap is a range of elements [f,l) that has the following properties:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • *f範囲内の最大要素である
    Original:
    *f is the largest element in the range
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • 新しい要素がstd::push_heap()を使用して追加できます
    Original:
    a new element can be added using std::push_heap()
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • 最初の要素はstd::pop_heap()を用いて除去することができる
    Original:
    the first element can be removed using std::pop_heap()
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
要素の実際の配置は、実装定義です.
Original:
The actual arrangement of the elements is implementation defined.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集]

#include <iostream>#include <algorithm>   int main(){std::vector<int> v {3, 1, 4, 1, 5, 9};   std::make_heap(v.begin(), v.end());   std::cout<<"v: ";for(auto i : v)std::cout<< i <<' ';std::cout<<'\n';   v.push_back(6);   std::cout<<"before push_heap: ";for(auto i : v)std::cout<< i <<' ';std::cout<<'\n';   std::push_heap(v.begin(), v.end());   std::cout<<"after push_heap: ";for(auto i : v)std::cout<< i <<' ';std::cout<<'\n';}

出力:

v: 9 5 4 1 1 3 before push_heap: 9 5 4 1 1 3 6 after push_heap: 9 5 6 1 1 3 4

[編集]参照

最大ヒープから最も大きな要素を削除します
(関数テンプレート)[edit]
close