Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. /*
  2. * File: InFront.h
  3. * Author: Diogo
  4. *
  5. * Created on 2 de Outubro de 2014, 16:56
  6. */
  7.  
  8. #ifndef INFRONT_H
  9. #define INFRONT_H
  10.  
  11. #include <iostream>
  12. #include <string>
  13. #include <algorithm>
  14.  
  15. #include <deque>
  16. #include <vector>
  17.  
  18. using namespace std;
  19.  
  20. template<class T>
  21. class InFront {
  22. private:
  23. vector< deque<T> > seqs;
  24. int nrSeq;
  25.  
  26. public:
  27. InFront(int nrs);
  28. InFront(const InFront& i);
  29. ~InFront();
  30. void insElem(const T &elem, int ns);
  31. void remover(int n, int ns);
  32. void toString(ostream &out) const;
  33. };
  34.  
  35. template<class T>
  36. InFront<T>::InFront(int nrs) : seqs(nrs) {
  37. nrSeq = nrs;
  38. }
  39.  
  40. template<class T>
  41. InFront<T>::InFront(const InFront& i) : seqs(i.seqs) {
  42. nrSeq = i.nrSeq;
  43. }
  44.  
  45. template<class T>
  46. InFront<T>::~InFront() {
  47.  
  48. }
  49.  
  50. template<class T>
  51. void InFront<T>::insElem(const T& elem, int ns) {
  52. if (ns >= 0 && ns < nrSeq) {
  53. bool flag = false;
  54. int pos = 0;
  55. typename deque<T>::iterator it;
  56. for (it = seqs[ns].begin(); it != seqs[ns].end(); it++) {
  57. if (*it == elem) {
  58. flag = true;
  59. } else if (flag == false) {
  60. pos++;
  61. }
  62. }
  63. if (flag == true) {
  64. seqs[ns].erase(seqs[ns].begin() + pos);
  65. }
  66. seqs[ns].push_front(elem);
  67. cout << endl;
  68. } else {
  69. cout << "ERRO!" << endl;
  70. }
  71. }
  72.  
  73. template<class T>
  74. void InFront<T>::remover(int n, int ns) {
  75. if (ns >= 0 && ns < nrSeq) {
  76. for (int i = 0; i < n; i++) {
  77. if (!seqs[ns].empty()) {
  78. seqs[ns].pop_back();
  79. }
  80. }
  81. } else {
  82. cout << "ERRO!" << endl;
  83. }
  84. }
  85.  
  86. template<class T>
  87. void InFront<T>::toString(ostream& out) const {
  88. for (int j = 0; j < seqs.size(); j++) {
  89. out << "DEQUE Nº" << j+1 << ":" << endl;
  90. for (int i = 0; i < seqs[j].size(); i++) {
  91. out << "-" << seqs[j][i] << ";";
  92. }
  93. out << endl;
  94. }
  95. }
  96.  
  97. template<class T>
  98. ostream &operator<<(ostream &out, const InFront<T> &i) {
  99. i.toString(out);
  100. return out;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement