看板 C_and_CPP 關於我們 聯絡資訊
先感謝 littleshan 的回覆 我修改之後,還有一點小問題: 我必須要明確寫出 allocator<T>,否則無法編譯 有沒有辦法讓我不要寫,而是讓 Compiler 自行推導出來呢? #include <iostream> #include <vector> #include <list> using namespace std; template <typename T = int, template<typename, typename> class Cont = vector> class Stack { public: void push(T val) { cont.push_back(val); } void pop() { cont.pop_back(); } T top() /* 有更好的寫法嗎?總覺得這麼寫不太妥... */ { Cont<T, allocator<T> >::iterator iter = cont.end(); return *(--iter); } private: Cont<T, allocator<T> > cont; }; int main() { Stack<double, list> s; for (int i = 0; i < 5; i++) s.push(i * 0.5); for (int i = 0; i < 5; i++) { cout << s.top() << endl; s.pop(); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.166.145
Kerlifw:再加上 template<typename> class V = allocator? 03/18 17:00