看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我想要寫出這樣的東西: 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