STL_make_heap(), pop_heap(), push_heap()
2572 ワード
make_Heap()は、大きなスタック、または小さなスタックを生成するmakeです.heap(_RAITter,_RAITter)デフォルトでは、大きなスタックmake_が生成されます.heap(_RAIter,_RAIter,_Compare) _Compareには2つのパラメータがあります.1つはgreater(小さなトップスタックを生成)で、1つはless(大きなトップスタックを生成)です.
push_Heap()は、スタックに要素を挿入し、スタックのルールをpush_にします.heap(_RAitter,_RAitter)デフォルトは大頂山push_heap(_RAIter,_RAIter,_Compare) _Compareには2つのパラメータがあり、1つはgreater(小さなトップスタック)、1つはlessです(大屋根ヒープ)push_heapを呼び出す前にmake_heapを呼び出す必要があります最初の配列push_back挿入要素を作成し、次にpush_heapを呼び出す必要があります.これにより、最後の要素が適切な位置に挿入されます.push_heapの_Compareとmake_heapの_Compareパラメータが一致しなければなりません.そうしないと、ヒープの挿入に失敗し、最後の要素が最後の位置に挿入され、挿入が発生します.失敗
pop_Heap()はスタックに基づいて、スタックトップ要素をポップアップします.pop_heap(_RAitter,_RAitter)デフォルトは大頂山pop_heap(_RAIter,_RAIter,_Compare) _Compareには2つのパラメータがあり、1つはgreater(小さなトップスタック)、1つはless(大きなトップスタック)、例えばpop_heap(nums.begin()、nums.end()greater()は、スタックトップ要素(配列の最初の位置)と配列の最後の位置を合わせます.その後、配列pop_backを呼び出して、この要素を削除できます.pop_heapの_Compareとmake_heapの_Compareパラメータは一致しなければなりません.そうしないと失敗します.
変換元:https://blog.csdn.net/qq_29630271/article/details/66478256
push_Heap()は、スタックに要素を挿入し、スタックのルールをpush_にします.heap(_RAitter,_RAitter)デフォルトは大頂山push_heap(_RAIter,_RAIter,_Compare) _Compareには2つのパラメータがあり、1つはgreater(小さなトップスタック)、1つはlessです(大屋根ヒープ)push_heapを呼び出す前にmake_heapを呼び出す必要があります最初の配列push_back挿入要素を作成し、次にpush_heapを呼び出す必要があります.これにより、最後の要素が適切な位置に挿入されます.push_heapの_Compareとmake_heapの_Compareパラメータが一致しなければなりません.そうしないと、ヒープの挿入に失敗し、最後の要素が最後の位置に挿入され、挿入が発生します.失敗
pop_Heap()はスタックに基づいて、スタックトップ要素をポップアップします.pop_heap(_RAitter,_RAitter)デフォルトは大頂山pop_heap(_RAIter,_RAIter,_Compare) _Compareには2つのパラメータがあり、1つはgreater(小さなトップスタック)、1つはless(大きなトップスタック)、例えばpop_heap(nums.begin()、nums.end()greater()は、スタックトップ要素(配列の最初の位置)と配列の最後の位置を合わせます.その後、配列pop_backを呼び出して、この要素を削除できます.pop_heapの_Compareとmake_heapの_Compareパラメータは一致しなければなりません.そうしないと失敗します.
# include
# include
# include
# include
using namespace std;
void printVec(vector nums)
{
for (int i = 0; i < nums.size(); ++i)
cout << nums[i] << " ";
cout << endl;
}
int main(void)
{
int nums_temp[] = {8, 3, 4, 8, 9, 2, 3, 4, 10};
vector nums(nums_temp, nums_temp + 9);
cout << "make_heap : ";
printVec(nums);
cout << "( (less))make_heap: ";
make_heap(nums.begin(), nums.end());
printVec(nums);
cout << "(less)make_heap: ";
make_heap(nums.begin(), nums.end(), less ());
printVec(nums);
cout << "(greater)make_heap: ";
make_heap(nums.begin(), nums.end(), greater ());
printVec(nums);
cout << " ,nums greater" << endl;
cout << "push_back(3)" << endl;
nums.push_back(3);
cout << " (less)push_heap push_heap : ";
push_heap(nums.begin(), nums.end());
printVec(nums);
cout << "push_heap greater make_heap , push_heap : ";
push_heap(nums.begin(), nums.end(), greater());
printVec(nums);
cout << "(greater, )pop_heap: ";
pop_heap(nums.begin(), nums.end(),greater());
printVec(nums);
cout << "pop_back(): ";
nums.pop_back();
printVec(nums);
}
変換元:https://blog.csdn.net/qq_29630271/article/details/66478256