作者james732 (好人超)
站內C_and_CPP
標題[問題] template
時間Thu Mar 18 14:52:09 2010
遇到的問題: (題意請描述清楚)
我想要寫出這樣的東西:
int main()
{
MyStack default; // 容器使用 vector<int>
MyStack<double> dstack; // 容器使用 vector<double>
MyStack<string, list> dlstack; // 容器使用 list<string>
}
寫一個自定義的 stack, 裡面用 STL container 來裝資料
如果完全不指定 template parameter, 則預設為 vector<int>
可以指定一個 template parameter T, 則 container 變為 vector<T>
也可以藉由再加上第二個 parameter, 進一步的改變 container
不過我不知道要怎麼去宣告這樣的 template class...
目前只能想到這個地步
template < ???? >
class MyStack
{
public:
void push(T data) { container.push_back(data); }
void pop(); { container.pop_back(); }
T top();
private:
Container container;
};
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
推 LPH66:template<class T=int, class Container=vector<T> > 03/18 14:59
→ LPH66:不過這樣一來全部用預設要寫成 MyStack<> 03/18 14:59
→ LPH66:你的第三個也要寫成 MyStack<string, list<string> > 03/18 15:00
→ james732:一樓的寫法我試過 問題就如你二三樓的補充 我希望避免 03/18 15:01
→ james732:因此才想問問看有沒有更好的寫法 XD 03/18 15:01