我準備練習一下模板的知識,然後自己實現vector類。在這之前,先用模板實現乙個佇列來熱身吧。佇列的底層是鍊錶。主要是熟悉一下模板的寫法。
另外,就是模板的定義和實現都要寫在乙個檔案中(export關鍵字可以避免這樣。還沒用過),所以倒數第二行我加了個# include "queue.hpp",只能是hpp,不能是cpp。不然報錯。我用的是4.5.2。
1.queue.h
/*
* queue.h
* * created on: 2011-8-28
* author: gauss
*/#ifndef queue_h_
#define queue_h_
templateclass queue;
templateclass queue_item
t item;
queue_item *next;
};templateclass queue
queue(const queue &q);
queue& operator=(const queue &q);
~queue();
void push(const t &i);
void pop();
t front();
t back();
bool empty()
size_t size()
void clear();
private:
queue_item*head;
queue_item*tail;
size_t n;
void copy_item(const queue &q);
};#include "queue.hpp" //注意這句話。
#endif /* queue_h_ */
2.queue.hpp
/*
* queue.hpp
* * created on: 2011-8-28
* author: gauss
*/#ifndef queue_hpp_
#define queue_hpp_
templatevoid queue::push(const t &i) //注意類作用域的形式:queue::
else
++n;
}templatevoid queue::pop()
}templatet queue::front() else
}templatet queue::back() else
}templatevoid queue::clear()
}templatequeue::~queue()
templatequeue::queue(const queue &q) :
head(0), tail(0), n(0)
templatequeue& queue::operator=(const queue &q)
//注意此處,函式返回型別需此種形式queue&, 不能是queue&
return *this;
}templatevoid queue::copy_item(const queue &q)
}#endif /* queue_hpp_ */
3.main.cpp
#include #include #include "queue.h"
#include using namespace std;
// test the queue class template
int main(int argc, char *argv)
執行結果:
empty
empty
queue 2: 1
queue 2: 2
the size of queue 2: 2
queue 1: 1
queue 1: 2
gauss
jiawenjie
C 利用模板實現佇列
這個 的實現主要使用了類模板以及模板函式,友元,成員模板以及成員模板函式。這裡需要注意的時,類的成員函式在實現的時候必須滿足以下幾點 1 必須以template開始,後接模板形參表 2 必須指出是那個類成員 3 類名必須包含模板形參 具體的格式如下 templatereturn type queue...
C 模板實現鍊錶佇列
佇列是一種十分常見的資料結構,具有先進先出的特點.佇列在處理訊息時,非常常用.本文利用c 模板,鍊錶來實現乙個簡單的佇列.解讀如下 1.queuelinklist標頭檔案.queuelinklist私有繼承於linklist,因為做為佇列中的核心鍊錶資料結構,我們只希望其具有尾插入,頭取出的方法.採...
C 模板實現雙鏈表和佇列
首先來了解模板的定義 模板是泛型程式設計的基礎,泛型程式設計是指編寫與型別無關的邏輯 是一種復用方式。模板分為模板函式和模板類 函式模板的格式 template 返回型別 函式名 引數列表 類模板的格式 template class 類名 templatestruct listnode 實現模板類 ...