数据结构应用标准模版库STL——堆

原创 2013年12月04日 16:02:06

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
	int a[]={1,3,5,2,8,11};
	int size=sizeof(a)/sizeof(int);
	vector<int> v(a,a+size);
	make_heap(v.begin(),v.end());//建堆
	cout<<v.front ()<<endl;  //堆的第一个元素

	pop_heap(v.begin(),v.end ());
	v.pop_back();//删除堆的第一个元素
	cout<<v.front ()<<endl;  //堆的第一个元素
	
	v.push_back (100);//在最后面插入一个元素
	push_heap(v.begin(),v.end ());//重构堆
	cout<<v.front ()<<endl;//删除堆的第一个元素

	sort_heap(v.begin(),v.end());  //堆排序,从小到大

	while(!v.empty())
	{
		cout<<v.back()<<" ";
		v.pop_back();
	}

	return 0;

}

数据结构应用标准模版库STL——向量的操作(对排序后的子表进行排序)

向量是基于模版的类,它存储相同数据类型的元素。与数组一样的是,向量对象允许通过下标运算符直接访问元素。然而,与数组不同的是,向量保留其大小信息,且提供先关的size()函数,利用此函数可以访问向量的元...

数据结构应用标准模版库STL——优先级队列(优先级队列排序)

优先级队列的抽象模型并不把数据存储结构看成是顺序容器。元素在进入优先级队列时,没有任何限制,但在退出时却有一个标准。我们可以把优先级队列想象成数据元素的集合,元素就像被随便丢到垃圾桶一样,彼此没有什么...

数据结构应用标准模版库STL——表的操作(没有重复的有序表)

表是按位置保存的一个元素序列。因为不允许下标访问,因此为了访问元素的值,我们必须通过其前面的一个元素。然而,所有的插入和删除操作的是ian复杂度均为O(1),即使是那些在表内部执行的操作也是如此。想比...

数据结构应用标准模版库STL—— map的操作

#include #include #include using namespace std; int main() { map student; student["a"]=10; stu...

数据结构应用标准模版库STL——栈(分解栈元素)

我们开发出一种算法:uncouple(),它使用辅助栈查找和从当前栈中删除第一次出现的元素target。重复地删除栈顶部的元素,并将其推入到辅助栈中,知道找到target.使target从原来的栈中出...

数据结构应用标准模版库STL——队列的基本操作

队列的基本操作有size(), empty(),push(),front(),pop(); #include #include using namespace std; int main() { ...

C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用

摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和具体的应用实现(STL),本文是系列总结的第二篇,主要针对线性表中的链表 S...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构应用标准模版库STL——堆
举报原因:
原因补充:

(最多只允许输入30个字)