极速多用户网页音乐播放器(框架固定形式/底部音乐播放器)
<div><p>此网页使用了框架,但您的浏览器不支持框架。</p></div>

类模板的简单用法

本次作业需要你实现一个用于存储整型数据的队列类(class IntQueue)。
要求如下:
 产生队列的时候可以指定队列的大小,默认的大小是最大10个元素,。
 出于简单考虑,本次作业中实现队列用数组方式就可以了。
 注意完成合适的构造函数和析构函数,不要产生内存泄漏。
 需实现的基本功能(类IntQueue的成员函数):
1. bool EnQueue (int ); 将一个整型数据放进队列,需要根据队列大小情况向用户给出提示
2. int DeQueue (); 返回位于队列第一个位置的数据,并将该数据移出队列
3. int Peek () const; 返回位于队列第一个位置的数据,但不将其移出队列
4. int GetSize () const; 返回队列现有的数据个数
5. void Display () const; 在屏幕上输出现有队列中的所有数据


代码包含三个文件:Queue.h,Queue.cpp,Main.cpp
所以在main文件里包含了cpp文件,是因为模板类方法必须跟实例在一起,否则会出现解析错误。或者把cpp里面的方法跟头文件放在一起


Queue.h代码如下:
View Code
 1 #ifndef _QUEUE_H_
 2 #define _QUEUE_H_
 3 
 4 
 5 template <class T>
 6 class Queue
 7 {
 8 public:
 9     Queue(int iCount = 10);
10     ~Queue();
11     bool EnQueue(T value);
12     T DeQueue();
13     T Peek() const;
14     T GetSize() const;
15     void Display() const;
16 private:
17     T* _pQueue;
18     int _iSize;
19     int _iNum;
20 };
21 
22 #endif

Queue.cpp代码如下: 

View Code
 1 #include "Queue.h"
 2 #include <iostream>
 3 
 4 template <class T> Queue<T>::Queue(int iCount) : _pQueue(NULL), _iSize(0), _iNum(iCount)
 5 {
 6     _pQueue = new T[iCount];
 7 }
 8 template <class T> Queue<T>::~Queue()
 9 {
10     if (NULL != _pQueue)
11     {
12         delete []_pQueue;
13         _pQueue = NULL;
14     }
15 }
16 template <class T> bool Queue<T>::EnQueue(T value)
17 {
18     if (_iSize >= _iNum)
19     {
20         return false;
21     }
22     
23     for (int i = _iSize; i > 0; i--)
24     {
25         *(_pQueue + i) = *(_pQueue + i - 1);
26     }
27     *_pQueue = value;
28     _iSize++;
29     return true;
30 }
31 template <class T> T Queue<T>::DeQueue()
32 {
33     _iSize--;
34     return *(_pQueue + _iSize + 1);
35 }
36 template <class T> T Queue<T>::Peek() const
37 {
38     return *(_pQueue + _iSize);
39 }
40 template <class T> T Queue<T>::GetSize() const
41 {
42     return _iSize;
43 }
44 template <class T> void Queue<T>::Display() const
45 {
46     for (int i = _iSize - 1; i >= 0; i--)
47     {
48         std::cout << *(_pQueue + i) << std::endl;
49     }
50 }

 Main.cpp代码如下:

View Code
 1 #include <cstdlib>
 2 #include <stdio.h>
 3 #include "Queue.h"
 4 #include "Queue.cpp"
 5 
 6 int main(int argc, char** argv)
 7 {
 8     Queue<int> m_Queue;
 9     m_Queue.EnQueue(0);
10     m_Queue.EnQueue(1);
11     m_Queue.EnQueue(2);
12     m_Queue.EnQueue(3);
13     m_Queue.EnQueue(4);
14     m_Queue.EnQueue(5);
15     m_Queue.EnQueue(6);
16     m_Queue.EnQueue(7);
17     m_Queue.EnQueue(8);
18     //m_Queue.EnQueue(9);
19 //    m_Queue.DeQueue();
20     m_Queue.DeQueue();
21     m_Queue.Display();
22     getchar();
23     return EXIT_SUCCESS;
24 }

 

posted @ 2013-04-14 23:22  飞鼠溪  阅读(125)  评论(0编辑  收藏  举报