Advertisement
Guest User

Untitled

a guest
May 20th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. #ifndef _QUEUE_INTERFACE_H_
  2. #define _QUEUE_INTERFACE_H_
  3. #include "LinkList.hpp"
  4. #include<iostream>
  5.  
  6. template <typename Type>
  7. class queue_interface
  8. {
  9. public:
  10. void push(const Type & val);
  11. void push(Type&& val);
  12. Type& front();
  13. const Type& front() const;
  14. Type& back();
  15. const Type& back() const;
  16. void pop();
  17. size_t size() const;
  18. bool empty() const;
  19. void printQ();
  20. ~queue_interface() = default;
  21. template<typename U>
  22. friend std::ostream& operator<<(std::ostream& os, queue_interface<U>& queue);
  23. private:
  24. LinkList<Type> myQueue;
  25. };
  26.  
  27. template<typename U>
  28. std::ostream& operator<<(std::ostream& os, queue_interface<U>& queue) {
  29. os << queue.value() << std::endl;
  30. return os;
  31. }
  32.  
  33. template<typename T>
  34. void queue_interface<T> :: printQ() {
  35. for(auto it = myQueue.begin(); it != myQueue.end(); ++it)
  36. std::cout << *it << std::endl;
  37. }
  38.  
  39. template<typename Type>
  40. void queue_interface<Type> :: push(const Type& val) {
  41. myQueue.push_back(val);
  42. }
  43.  
  44. template<typename Type>
  45. void queue_interface<Type> :: push(Type&& val) {
  46. myQueue.push_back(val);
  47. }
  48.  
  49. template<typename Type>
  50. Type& queue_interface<Type> :: front() {
  51. if(myQueue.size() == 0) throw std::out_of_range("Stack is empty!");
  52. else {
  53. auto begin = myQueue.begin();
  54. return *begin;
  55. }
  56. }
  57.  
  58. template<typename Type>
  59. const Type& queue_interface<Type> :: front() const {
  60. if(myQueue.size() == 0) throw std::out_of_range("Stack is empty!");
  61. else {
  62. auto begin = myQueue.begin();
  63. return *begin;
  64. }
  65. }
  66.  
  67. template<typename Type>
  68. Type& queue_interface<Type> :: back() {
  69. if(myQueue.size() == 0) throw std::out_of_range("Stack is empty!");
  70. else {
  71. auto end = myQueue.end();
  72. return *end;
  73. }
  74. }
  75.  
  76. template<typename Type>
  77. const Type& queue_interface<Type> :: back() const {
  78. if(myQueue.size() == 0) throw std::out_of_range("Stack is empty!");
  79. else {
  80. auto end = myQueue.end();
  81. return *end;
  82. }
  83. }
  84.  
  85. template<typename Type>
  86. bool queue_interface<Type> :: empty() const {
  87. if(myQueue.size() == 0)
  88. return true;
  89. else return false;
  90. }
  91.  
  92. template<typename Type>
  93. void queue_interface<Type> :: pop() {
  94. myQueue.pop();
  95. }
  96.  
  97. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement