推 ernieyang09:謝謝 我在試試看^^ 11/05 14:20
※ 引述《ernieyang09 (亂入)》之銘言:
: 老師出了一個作業
: 是要我們用template class寫出queue跟stack
: 他沒有實際教 一寫就卡住了
: 助教給的
: template < class T >
: class Queue
: {
: public:
: Queue (int queueCapacity = 0);
: bool IsEmpty();
: bool IsFull();
: void Push();
: void Pop();
: private:
: T *queue;
: int front;
: int rear;
: int capacity;
: int counter;
: };
: template <class T>
: Queue<T>::Queue(int queueCapacity):capacity(queueCapacity)<<不懂寫法
: {
: queue = new T[capacity]; <<這邊為什麼要用T還有queue跟capacity哪來
: front = rear = counter = 0;
: }
嗯..這個例子用到的只是把型態當作參數, 丟給模板建一個
新類別而已, 搞不清楚的話我先寫一個只能裝 double 的佇
列給你看喔
──────────────────────────
class Queue
{
public:
Queue (int queueCapacity = 0);
bool IsEmpty();
bool IsFull();
void Push(); // 放東西進去的方法不叫push, 要接受引數
void Pop(); // 拿東西出來的方法不叫pop
private:
double *queue;
int front;
int rear;
int capacity; ←────────┐ 他們在這裡被定義
int counter; ←────────┐│
}; ││
││
Queue::Queue(int queueCapacity) ││
: capacity(queueCapacity) ││
{ ││
queue = new double[capacity]; ─┼┘
front = rear = counter = 0; ─┘
}
──────────────────────────────
: capactity ( ... )
至於上面這行的用法請關鍵字「member initializer list」
前篇推文的 initialization list 其實是另一種東西
然後再比對你本來的程式碼, 除了前面都要加template、類
別名稱要加<T>以外, 剩下只有把double的地方換成 T 而已
, 這個佇列能裝的東西就變多樣了, 不過在寫模板之前, 我
還是建議你先達成以下條件 :
1.熟悉 C++的語法
2.沒有用模板的情況下, 能夠獨立寫出適合的類別來解決
問題
3.會使用 STL 的 vector(只需要會push_back、pop_back
等函式)
等你達成上面的需求, 會發現這個作業基本上也是新手問題
, 課本通常就有類似的題目跟詳解了 (不外乎Stack、Queue
、Linked List), 沒有的話請丟掉它.
: 完全看不懂~"~ 不知道有沒有網站是適合超新手看的 順便可以解釋一下嗎
: (我就queue的地方看不懂 後面的都還好)
: 還有題目是n個櫃檯排客人 我想到的是用struct counter把class T包起來
: 然後cin >> n 把他new counter[n] 但是似乎完全不是這樣
: 我想我是因為上面看不懂 現在整個一頭霧水不知道怎麼寫
客人排隊是先到先服務, 然後走人, 符合佇列的 FIFO性質,
如果用一個型態 Customer 來代表客人, 那麼可以這樣做
// 自訂客人的類別
struct Customer
{
string name;
};
// 輸入客人名字
Customer customer;
cin >> customer.name;
// 拷貝一個客人副本放進佇列裡
Queue< Customer > queue;
queue.Enqueue( customer );
--
◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█ T-ara版怎麼去
████◤ ██ ◢██◣█ ██ ████ ██ s ~> T-ara
█/███ ██ ██ ██ █/█ ◢███ █/█ 歡迎您的光臨
████◤ ██ ██ ██ ██◤ ███◤ ██◤ 恩靜、智妍、孝敏
█/███ ██ █/██◤ ██ █/██ ██ 素妍、居麗、寶藍
████◤ █◤ ◥██◤ █◤ ████◤█◤ ψmakigoto123
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
※ 編輯: loveme00835 來自: 140.121.197.115 (11/05 13:35)