// 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 generial 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 #include #include #include // 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::sort_1b_c queue_of_int; using namespace std; using namespace dlib; int main() { 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; }