fork(1) download
  1. #include <vector>
  2.  
  3. template<typename T>
  4. class Listoid;
  5. template<typename T>
  6. Listoid<T> cons(T new_elem, Listoid<T> list);
  7.  
  8. template<typename T>
  9. class Listoid{
  10.  
  11. private:
  12. std::vector<T> list;
  13.  
  14. public:
  15. typedef typename std::vector<T>::iterator iterator;
  16.  
  17. iterator begin() {return list.begin();}
  18. iterator end() {return list.end();}
  19.  
  20. public:
  21. Listoid(T t) {
  22. list.push_back(t);
  23. }
  24.  
  25. const T operator [](int i){
  26. return list[i];
  27. }
  28.  
  29. void addElem(T ne){
  30. list.push_back(ne);
  31. }
  32.  
  33. friend Listoid<T> cons <>(T new_elem, Listoid<T> list);
  34.  
  35. };
  36.  
  37. template<typename T>
  38. Listoid<T> cons(T new_elem, Listoid<T> list){
  39.  
  40. Listoid<T> new_list(new_elem);
  41. for(typename Listoid<T>::iterator it = list.begin(), e = list.end();
  42. it != e; ++it){
  43. new_list.addElem(*it);
  44. }
  45. return new_list;
  46. }
  47.  
  48.  
  49. int main(){
  50.  
  51. Listoid<int> lista(312);
  52. lista.addElem(22);
  53.  
  54. Listoid<int> lista2 = cons(21, lista);
  55.  
  56. return 0;
  57. }
Success #stdin #stdout 0s 3012KB
stdin
Standard input is empty
stdout
Standard output is empty