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