annotate algs4-c++/src/Deque.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 1e3c509b6ac4
children
rev   line source
discordia@18 1 // g++ -std=c++11 Deque.cpp
discordia@12 2
discordia@12 3
discordia@12 4 #include "Deque.hpp"
discordia@12 5
discordia@12 6 #include <iostream>
discordia@12 7
discordia@12 8 int main ( int argc, char **argv ) {
discordia@12 9
discordia@12 10 Deque<long> deque;
discordia@12 11 bool left = true;
discordia@12 12
discordia@12 13 long i;
discordia@12 14 while ( ! std::cin.eof() ) {
discordia@12 15 std::cin >> i;
discordia@12 16 if ( std::cin.good() ) {
discordia@12 17 if ( left ) {
discordia@12 18 deque.push_left( i );
discordia@12 19 left = false;
discordia@12 20 }
discordia@12 21 else {
discordia@12 22 deque.push_right( i );
discordia@12 23 left = true;
discordia@12 24 }
discordia@12 25 }
discordia@12 26 }
discordia@12 27
discordia@12 28 std::cout << "Deque has " << deque.size() << " entries." << std::endl;
discordia@12 29
discordia@12 30 for ( auto iter = deque.begin(); iter != deque.end(); ++iter ) {
discordia@12 31 std::cout << *iter << std::endl;
discordia@12 32 }
discordia@12 33
discordia@12 34 std::cout << "Dequeuing entries..." << std::endl;
discordia@12 35
discordia@12 36 left = true;
discordia@12 37 while ( ! deque.is_empty() ) {
discordia@12 38 if ( left ) {
discordia@12 39 i = deque.pop_left();
discordia@12 40 left = false;
discordia@12 41 }
discordia@12 42 else {
discordia@12 43 i = deque.pop_right();
discordia@12 44 left = true;
discordia@12 45 }
discordia@12 46 std::cout << i << std::endl;
discordia@12 47 }
discordia@12 48
discordia@12 49 std::cout << "Deque has " << deque.size() << " entries." << std::endl;
discordia@12 50
discordia@12 51 }