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)

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

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

  • 相关阅读:
    android和ios系统框架
    iOS分类和扩展(Categories和Extensions)
    iOS并发编程
    认识View Controller
    JVM(Java虚拟机)
    iOS Apps核心对象
    Memory Management in Cocoa Program
    Block和GCD介绍
    iOS 系统框架分层结构
    ReLearn C(The C Programming Language.2Nd)
  • 原文地址:https://www.cnblogs.com/yunerlalala/p/5482734.html
Copyright © 2011-2022 走看看