Mercurial > Algorithms__Sedgewick
annotate algs4-c++/src/Queue.cpp @ 24:028689700a47
Updated Queue to have a const_iterator too and to support a copy constructor (problem 1.3.41
author | Eris Caffee <discordia@eldalin.com> |
---|---|
date | Tue, 23 Jun 2015 14:52:17 -0500 |
parents | eb159ea69f33 |
children | 80ca1973e3bd |
rev | line source |
---|---|
discordia@16 | 1 // g++ -std=c++11 Queue.cpp |
discordia@8 | 2 |
discordia@8 | 3 |
discordia@8 | 4 #include <iostream> |
discordia@8 | 5 |
discordia@16 | 6 #include "Queue.hpp" |
discordia@8 | 7 |
discordia@8 | 8 int main ( int argc, char **argv ) { |
discordia@8 | 9 |
discordia@8 | 10 Queue<long> queue; |
discordia@8 | 11 |
discordia@8 | 12 long i; |
discordia@8 | 13 while ( ! std::cin.eof() ) { |
discordia@8 | 14 std::cin >> i; |
discordia@8 | 15 if ( std::cin.good() ) |
discordia@8 | 16 if ( i >= 0 ) |
discordia@8 | 17 queue.enqueue(i); |
discordia@8 | 18 else |
discordia@8 | 19 queue.dequeue(); |
discordia@8 | 20 } |
discordia@8 | 21 |
discordia@8 | 22 std::cout << "Queue has " << queue.size() << " entries." << std::endl; |
discordia@8 | 23 |
discordia@8 | 24 for ( auto iter = queue.begin(); iter != queue.end(); ++iter ) { |
discordia@8 | 25 std::cout << *iter << std::endl; |
discordia@8 | 26 } |
discordia@8 | 27 |
discordia@24 | 28 Queue<long> q2( queue ); |
discordia@24 | 29 std::cout << "Copied queue to q2. q2 has " << q2.size() << " entries." << std::endl; |
discordia@24 | 30 for ( auto iter = q2.begin(); iter != q2.end(); ++iter ) { |
discordia@24 | 31 std::cout << *iter << std::endl; |
discordia@24 | 32 } |
discordia@24 | 33 |
discordia@24 | 34 |
discordia@8 | 35 std::cout << "Dequeuing entries..." << std::endl; |
discordia@8 | 36 |
discordia@8 | 37 while ( ! queue.is_empty() ) { |
discordia@8 | 38 i = queue.dequeue(); |
discordia@8 | 39 std::cout << i << std::endl; |
discordia@8 | 40 } |
discordia@8 | 41 |
discordia@8 | 42 std::cout << "Queue has " << queue.size() << " entries." << std::endl; |
discordia@8 | 43 |
discordia@24 | 44 |
discordia@24 | 45 // Silently empty q2 to avoid the assertion in the destructor. |
discordia@24 | 46 while ( ! q2.is_empty() ) |
discordia@24 | 47 q2.dequeue(); |
discordia@8 | 48 } |
discordia@8 | 49 |