// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt
/*
This is an example illustrating the use of the queue component (and
to some degree the general idea behind most of the other container
classes) from the dlib C++ Library.
It loads a queue with 20 random numbers. Then it uses the enumerable
interface to print them all to the screen. Then it sorts the numbers and
prints them to the screen.
*/#include<dlib/queue.h>#include<iostream>#include<iomanip>#include<ctime>#include<cstdlib>// I'm picking the version of the queue that is kernel_2a extended by
// the queue sorting extension. This is just a normal queue but with the
// added member function sort() which sorts the queue.
typedef dlib::queue<int>::sort_1b_c queue_of_int;
usingnamespace std;
usingnamespace dlib;
intmain(){
queue_of_int q;
// initialize rand()
srand(time(0));
for(int i =0; i <20; ++i){int a =rand()&0xFF;
// note that adding a to the queue "consumes" the value of a because
// all container classes move values around by swapping them rather
// than copying them. So a is swapped into the queue which results
// in a having an initial value for its type (for int types that value
// is just some undefined value. )
q.enqueue(a);
}
cout << "The contents of the queue are:\n";
while(q.move_next())
cout << q.element()<< "";
cout << "\n\nNow we sort the queue and its contents are:\n";
q.sort(); // note that we don't have to call q.reset() to put the enumerator
// back at the start of the queue because calling sort() does
// that automatically for us. (In general, modifying a container
// will reset the enumerator).
while(q.move_next())
cout << q.element()<< "";
cout << "\n\nNow we remove the numbers from the queue:\n";
while(q.size()>0){int a;
q.dequeue(a);
cout << a << "";
}
cout << endl;
}