Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <QCoreApplication>
  2. #include <iostream>
  3. template <class T>
  4. class Stack {
  5.     struct Link {
  6.        Link(T *d, Link *nxt) : dat(d), next(nxt) {}
  7.        T *dat;
  8.        Link *next;
  9.     } *head;
  10. public:
  11.     void push(T* el) {
  12.        Link* l = new Link(el, head);
  13.        head = l;
  14.     }
  15.     T* peek() {
  16.         return head->dat;
  17.     }
  18.     T* pop() {
  19.         Link* oldDat = head;
  20.         T* data = head->dat;
  21.         head = next->head;
  22.         delete oldDat;
  23.         return head->dat;
  24.     }
  25.     friend class Iterator;
  26. };
  27. class Iterator {
  28.    Stack::Link *sp;
  29.    public:
  30.    Iterator(const Stack<T> &s) : p(s.head) {}
  31.    Iterator() : p(0) {}
  32.  };
  33. class Foo {
  34.     int z;
  35.     public:
  36.         Foo(int zz) : z(zz) {
  37.             std::cout<<"Foo ctor! "<<z<<std::endl;
  38.         }
  39.      friend std::ostream& operator<< (std::ostream &s, const Foo & f) {
  40.         return s<<f.z;
  41.     }
  42. };
  43. int main(int argc, char *argv[])
  44. {
  45.     QCoreApplication a(argc, argv);
  46.     Foo *f1 = new Foo(228);
  47.     Stack<Foo> fooStack;
  48.     fooStack.push(f1);
  49.     Foo *z = fooStack.peek();
  50.     std::cout<<*z;
  51.     return a.exec();
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement