如何基于一个已知类型写出一个类

题目:

设计一个底层容器为向量类模板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;    
        }
 


 随机数

C++产生随机数的几种方法_c++随机数生成_新世纪debug战士的博客-CSDN博客 

 头文件

#include<ctime>

#include<cstdlib>

其他

int main()

{

     srand(time(0)

 int  r= (rand()%20)+0;  从【0,20)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值