C 模板實現佇列

2021-05-27 18:25:54 字數 2056 閱讀 3375

我準備練習一下模板的知識,然後自己實現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 實現模板類 ...