c++ - Reading data into a queue -


using following (incomplete) code, attempting insert 10 strings string queue (declared , defined further down), read contents out 1 @ time, output queue doe snot correspond expected output

int main() {                ifstream file;     (int count = 1; count <= 10; count ++)     {         string filename;             stringstream ss;         ss << "personlists/pl" << count << ".txt";         filename = ss.str();         waitinglistlist.add(filename);          waitinglistlist.remove(filename);                 cout << filename << endl;         waitinglistlist.add(filename);     } } 

the following expect code, , have verified filename objects being constructed correctly using stringstream seen in int main() inserting output stream directly after line filename = ss.str().

personlists/pl1.txt personlists/pl2.txt personlists/pl3.txt personlists/pl4.txt personlists/pl5.txt personlists/pl6.txt personlists/pl7.txt personlists/pl8.txt personlists/pl9.txt personlists/pl10.txt 

however, when print contents of queue, output receive, , unable discern pattern in file names indicate cause of this. can looking @ code here figure out what's going on? i've used same process in other parts of program, using same queue template.

personlists/pl1.txt personlists/pl1.txt personlists/pl2.txt personlists/pl1.txt personlists/pl3.txt personlists/pl2.txt personlists/pl4.txt personlists/pl1.txt personlists/pl5.txt personlists/pl3.txt 

queue.h

#ifndef queue_h #define queue_h using namespace std; template <class type> class queue { private:     type *contents;     int front, back;     int queuesize; public:     queue(int queuesize = 10);     ~queue();     bool empty() const;     bool full() const;     bool remove(type&);     bool add(type&);  }; #endif 

queuetemplate.h

#ifndef queuetemplate_h #define queuetemplate_h #include "queue.h" using namespace std;  // constructor template <class type> queue<type> :: queue(int queuesize):      front(0), back(0),     queuesize(queuesize),     contents(new type[queuesize + 1]) {}  // destructor template <class type> queue<type> :: ~queue() {     delete[] contents; }  // tests template <class type> bool queue<type> :: empty() const {     return (front == back) ? true : false; }  template <class type> bool queue<type> :: full() const {     return ((1 + back) % (queuesize + 1) == front) ? true : false; }  // push , pop template <class type> bool queue<type> :: remove(type& frontelement) {     if (empty())     {         return false;     }     else     {         frontelement = contents[front];         front = (front + 1) % (queuesize + 1);         return true;     } }  template <class type> bool queue<type> :: add(type& newelement) {     if(full())     {         return false;     }     else     {         contents[back] = newelement;         = (back + 1) % (queuesize + 1);         return true;     } } #endif 

first pass: add pl1, remove pl1, add pl1. queue contains pl1.

second pass: add pl2, remove pl1 (which @ front), add pl1 (filename updated remove). queue contains pl2, pl1

third pass: add pl3, remove pl2 (which @ front), add pl2 (filename updated remove). queue contains pl1, pl3, pl2

and on....

edit: first 7 iterations

  • add "pl1", remove/print "pl1", add "pl1" - queue: "pl1"
  • add "pl2", remove/print "pl1", add "pl1" - queue: "pl2", "pl1"
  • add "pl3", remove/print "pl2", add "pl2" - queue: "pl1", "pl3", "pl2"
  • add "pl4", remove/print "pl1", add "pl1" - queue: "pl3", "pl2", "pl4", "pl1"
  • add "pl5", remove/print "pl3", add "pl3" - queue: "pl2", "pl4", "pl1", "pl5", "pl3"
  • add "pl6", remove/print "pl2", add "pl2" - queue: "pl4", "pl1", "pl5", "pl3", "pl6", "pl2"
  • add "pl7", remove/print "pl4", add "pl4" - queue: "pl1", "pl5", "pl3", "pl6", "pl2", "pl7", "pl4"

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -