Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision | Last revision Both sides next revision | ||
push_heap_pop_heap [2009/04/10 19:58] marszaaljr |
push_heap_pop_heap [2009/04/10 20:14] marszaaljr |
||
---|---|---|---|
Linia 98: | Linia 98: | ||
gdzie //type// jest typem obiektów przechowywanych w kolekcji. Jeżeli trzeci argument | gdzie //type// jest typem obiektów przechowywanych w kolekcji. Jeżeli trzeci argument | ||
nie zostanie podany, do porównania uzywany jest operator < . | nie zostanie podany, do porównania uzywany jest operator < . | ||
+ | |||
+ | ===== pop_heap - zastosowanie ===== | ||
+ | |||
+ | Poniższa ilustracja pokazuje działanie algorytmu pop_heap: | ||
+ | |||
+ | {{:kopiec_pop.gif|}} | ||
+ | |||
+ | A to fragment kodu ilustrujący tę sytuację: | ||
+ | |||
+ | <code cpp> | ||
+ | #include <vector> | ||
+ | #include <algorithm> | ||
+ | #include <iostream> | ||
+ | using namespace std; | ||
+ | |||
+ | int main(){ | ||
+ | | ||
+ | int liczby[]={1,5,23,17,8,99}; | ||
+ | vector<int> wektor(liczby, liczby+6); | ||
+ | | ||
+ | make_heap(wektor.begin(),wektor.end()); | ||
+ | for(int i=0;i<wektor.size();i++) | ||
+ | cout<<wektor[i]<<" "; | ||
+ | // 99 17 23 5 8 1 | ||
+ | | ||
+ | pop_heap(wektor.begin(),wektor.end()); | ||
+ | cout<<endl; | ||
+ | | ||
+ | for(int i=0;i<wektor.size();i++) | ||
+ | cout<<wektor[i]<<" "; | ||
+ | //23 17 1 5 8 99 | ||
+ | | ||
+ | wektor.pop_back(); | ||
+ | cout<<endl; | ||
+ | | ||
+ | for(int i=0;i<wektor.size();i++) | ||
+ | cout<<wektor[i]<<" "; | ||
+ | //23 17 1 5 8 | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | </code> |