- 论坛徽章:
- 26
|
本帖最后由 evaspring 于 2012-06-02 20:47 编辑
搞定了, deque 模板有两个参数,一个是Element,另外一个是 Alloc ,所以必须要带一个 Alloc
- #include <memory>
- #include <deque>
- template <typename T, typename A, template <typename ELEM, typename A> class CONT = std::deque >
- class Stack {
- private:
- CONT<T,A> 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();
- }
- };
- template <typename T, typename A, template <typename, typename> class CONT>
- void Stack<T,A,CONT>::push (T const& elem)
- {
- elems.push_back(elem); // append copy of passed elem
- }
- template<typename T, typename A, template <typename, typename> class CONT>
- void Stack<T,A,CONT>::pop ()
- {
- if (elems.empty()) {
- throw std::out_of_range("Stack<>::pop(): empty stack");
- }
- elems.pop_back(); // remove last element
- }
- template <typename T, typename A, template <typename, typename> class CONT>
- T Stack<T,A,CONT>::top () const
- {
- if (elems.empty()) {
- throw std::out_of_range("Stack<>::top(): empty stack");
- }
- return elems.back(); // return copy of last element
- }
- int main(int argc, char* argv[])
- {
- return 0;
- }
复制代码 |
|