题目:
设计一个底层容器为向量类模板Vector<T>的适配器,要求实现最大值为优先级的优先级队列,测试main函数中随机生成10个20以内的int型数据压入队列中,然后依次出队并显示。
补充类
底层容器则 类内变量类型为高级容器
需要的函数:构造、析构、判断为空、入队、出队(实现最大数先出)
方法:利用类内变量调用高级容器里面的函数
template<class T>
class maxqueue
{
Vector<T> a;
public:
maxqueue()
{
}
~maxqueue()
{
}
void push(const T& item)
{
a.Push_back(item);
}
bool Empty()
{
a.Empty();
}
T pop()
{
Vector<int>::iterator it,max=a.Begin();
for(it=a.Begin();it!=a.End();it++)
{
if((*it)>(*max))
{
max=it;
}
}
T item =*max;
a.Erase(max);
return item;
}
};
实现优先级&出队
假设第一个数是最大值&迭代器的初始位置,利用固定第一个数,移动迭代器,比较第一个数和迭代器所指的数
比较方法:*it
比较完之后用item 记录最大值;
后通过调用高级容器erase函数,擦除最大值所在位置(迭代器),返回最大值;
T pop()
{
Vector<int>::iterator it,max=a.Begin();
for(it=a.Begin();it!=a.End();it++)
{
if((*it)>(*max))
{
max=it;
}
}
T item =*max;
a.Erase(max);
return item;
}
随机数
头文件
#include<ctime>
#include<cstdlib>
其他
int main()
{
srand(time(0)
int r= (rand()%20)+0; 从【0,20)
}