annotate algs4-c++/src/ResizingArrayDeque.cpp @ 27:80ca1973e3bd

Fleshed out Queue::generic_iterator a bit more to make it a more or less complete example of implmenting an iterator.
author Eris Caffee <discordia@eldalin.com>
date Tue, 23 Jun 2015 17:14:09 -0500
parents 2f87e582d91a
children
rev   line source
discordia@18 1 // g++ -std=c++11 ResizingArrayDeque.cpp
discordia@14 2
discordia@14 3
discordia@14 4 #include "ResizingArrayDeque.hpp"
discordia@14 5
discordia@14 6 #include <iostream>
discordia@14 7
discordia@14 8 int main ( int argc, char **argv ) {
discordia@14 9
discordia@14 10 ResizingArrayDeque<long> deque;
discordia@14 11 bool left = true;
discordia@14 12
discordia@14 13 long i;
discordia@14 14 while ( ! std::cin.eof() ) {
discordia@14 15 std::cin >> i;
discordia@14 16 if ( std::cin.good() ) {
discordia@14 17 if ( left ) {
discordia@14 18 deque.push_left(i);
discordia@14 19 left = false;
discordia@14 20 }
discordia@14 21 else {
discordia@14 22 deque.push_right(i);
discordia@14 23 left = true;
discordia@14 24 }
discordia@14 25 }
discordia@14 26 }
discordia@14 27
discordia@14 28 std::cout << "Deque has " << deque.size() << " entries." << std::endl;
discordia@14 29
discordia@14 30 for ( auto iter = deque.begin(); iter != deque.end(); ++iter ) {
discordia@14 31 std::cout << *iter << std::endl;
discordia@14 32 }
discordia@14 33
discordia@14 34 std::cout << "Popping entries..." << std::endl;
discordia@14 35
discordia@14 36 left = true;
discordia@14 37 while ( ! deque.is_empty() ) {
discordia@14 38 if ( left ) {
discordia@14 39 i = deque.pop_left();
discordia@14 40 left = false;
discordia@14 41 }
discordia@14 42 else {
discordia@14 43 i = deque.pop_right();
discordia@14 44 left = true;
discordia@14 45 }
discordia@14 46 std::cout << i << std::endl;
discordia@14 47 }
discordia@14 48
discordia@14 49 std::cout << "Deque has " << deque.size() << " entries." << std::endl;
discordia@14 50
discordia@14 51 }
discordia@14 52