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

std::is_heap

提供: cppreference.com
< cpp‎ | algorithm

 
 
アルゴリズムライブラリ
実行ポリシー (C++17)
非変更シーケンス操作
(C++11)(C++11)(C++11)
(C++17)
変更シーケンス操作
未初期化記憶域の操作
分割操作
ソート操作
バイナリサーチ操作
集合操作 (ソート済み範囲に対する)
ヒープ操作
is_heap
(C++11)
最小/最大演算
(C++11)
(C++17)
順列
数値演算
C のライブラリ
 
ヘッダ <algorithm> で定義
template<class RandomIt >
bool is_heap( RandomIt first, RandomIt last );
(1)
template<class RandomIt, class Compare >
bool is_heap( RandomIt first, RandomIt last, Compare comp );
(2)
範囲内の要素かどうかをチェックし[first, last)ヒープアール.
Original:
Checks if the elements in range [first, last) are a heap.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
第二はis_heap与えられた比較関数を使用するのに対しoperator<の最初のバージョンでは、要素を比較するためにcompを使用しています.
Original:
The first version of is_heap uses operator< to compare elements, whereas 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 to examine
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 の要件を満たさなければなりません。

[編集]値を返します

true範囲がヒープの場合falseその他のとき.
Original:
true if the range is heap, false otherwise.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集]複雑性

firstlastとの間の距離の線形
Original:
Linear in the distance between first and 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::cout<<"initially, v: ";for(auto i : v)std::cout<< i <<' ';std::cout<<'\n';   if(!std::is_heap(v.begin(), v.end())){std::cout<<"making heap...\n";std::make_heap(v.begin(), v.end());}   std::cout<<"after make_heap, v: ";for(auto i : v)std::cout<< i <<' ';std::cout<<'\n';}

出力:

initially, v: 3 1 4 1 5 9 making heap... after make_heap, v: 9 5 4 1 1 3

[編集]参照

最大ヒープである最も大きな部分範囲を探します
(関数テンプレート)[edit]
close