zoukankan      html  css  js  c++  java
  • C++队列中应该注意的一些问题

    第一次在C++中写类,新手,见笑

    #include<iostream.h>
    #include<iostream>
    template<typename T>
    class Queue
    {
    private:
    int maxsize,front,rear;
    T *q;
    public:
    Queue()
    {
    q=new T[maxsize];
    rear=front=0;
    }
    ~Queue()
    {
    delete []q;
    }
    bool AddQ(T item);
    bool Delete(T &item);
    bool QFull();
    bool QEmpty();
    int getsize();
    };
    template<typename T>
    bool Queue<T> ::AddQ(T item)
    {
    rear=(++rear)%maxsize;
    if(rear==front)
    {
    printf("The Queue is full");
    if(!front)
    {
    rear=maxsize;
    }
    else
    {
    rear=rear-1;
    }
    return false;
    }
    else
    {
    q[rear]=item;
    return true;
    }
    }
    template<typename T>
    bool Queue<T> ::Delete(T &item)
    {
    if(front==rear)
    {
    printf("The queue is empty!");
    return false;
    }
    else
    {
    front=front+1;
    front=front%maxsize;
    item=q[front];
    return true;
    }
    }
    template<typename T>
    int Queue<T> ::getsize()
    {
    return rear-front;
    }

    1、首先吧,类应该写到.h文件中

    2、其次应该写与类名一样的构造函数

    Queue()
    {
    q=new T[maxsize];
    rear=front=0;
    }

    3、template<typename T> 

    这样的话就可以不限制使用的数据类型了

    4、class之后的{}应该加;

    5、

    bool AddQ(T item);
    bool Delete(T &item);
    bool QFull();
    bool QEmpty();
    int getsize();

    在类外写这些函数时,每一个函数前应该加template<typename T> 

    6、还有一个问题:

    Delete(T &item)

    Add(T item)

    为什么一个取地址为什么另一个不取地址

    试了一下,好像暂时两个都可以运行

  • 相关阅读:
    C#开发代码的小技巧1
    17. 装箱、拆箱的最小化
    Google Map开发(一) ASP.NET中调用Google Map API实现简单的地图显示
    C#可空类型
    C#如何扩展类型的内置方法
    Linq合并两个DataTable
    <br style="clear:both" /><br />
    GridView内容<br />换行
    数据库连接字符串大全
    JS将Table导出到Excel
  • 原文地址:https://www.cnblogs.com/yunerlalala/p/5482734.html
Copyright © 2011-2022 走看看