任何人都可以告訴我這是怎麼回事?
template <typename T,
template <typename ELEM> class CONT = std::deque >
class Stack {
private:
CONT<T> elems; // elements
public:
void push(T const&); // push element
void pop(); // pop element
T top() const; // return top element
bool empty() const { // return whether the stack is empty
return elems.empty();
}
};
什麼,我不明白的是: 模板類V或說這個 「模板類CONT =的std :: deque的」
我想象這是
template <class>
class CONT = std::deque // here CONT is templatized class declaration.
但什麼讓我感到厭煩的是,我們如何給類名稱CONT分配一些東西,而不是寫下它的定義(我一直這樣做直到這一次):
template <class>
class CONT{
//def
}
一件事:
template <class> // why its only class written in angle bracket there should be also be name
like : template<class ty>
非常感謝,任何幫助是非常讚賞)
**這不會起作用**'std :: deque'有兩個參數(一個是可選的),因此只能作爲'template'模板參數傳遞**兩個**參數。在這裏,你可以將'std :: deque'(而不是'std :: deque')作爲普通的模板參數傳遞:這就是'std :: stack'的工作原理。一般來說,模板模板參數不夠靈活,不值得使用它們的麻煩(除了在元編程上下文中)。 –
2011-04-08 09:49:47
你的代碼有很多的語法錯誤。我只固定一個。 – 2011-04-08 09:51:53
@Tomalak:是的,但你做得更糟。 – Potatoswatter 2011-04-08 10:00:10