{
// test heap, 底层以vector完成
int ia[9] = { 0,1,2,3,4,8,9,3,5 };
vector<int> ivec(ia, ia + 9);
make_heap(ivec.begin(), ivec.end());
for (int i = 0; i < ivec.size(); i++) {
cout << ivec[i] << " "; //
}
cout << endl;
ivec.push_back(7); // 在ivec的尾端 push 7
push_heap(ivec.begin(), ivec.end()); // 将尾端的数据融合进堆里
for (int i = 0; i < ivec.size(); i++)
cout << ivec[i] << " ";
cout << endl;
pop_heap(ivec.begin(), ivec.end()); // 将堆顶元素移到ivec的尾端
cout << ivec.back() << endl; // 9, return but not remove
ivec.pop_back();
for (int i = 0; i < ivec.size(); i++)
cout << ivec[i] << " ";
cout << endl;
sort_heap(ivec.begin(), ivec.end()); // 对heap对应的vector中的元素排序
for(int i=0;i<ivec.size();++i)
cout << ivec[i] << " "; // 0 1 2 3 4 5 6 7 8
cout << endl;
}
References: STL源码剖析,侯捷