// test_print_template.cpp a general template function to print a STL container #include #include #include #include #include #include #include #include #include using namespace std; // a template for a general STL container print function template void print(forward_iterator first, forward_iterator last, const char* title) { cout << title << endl; while (first != last) cout << *first++ << " "; cout << endl << endl; } int main() { int i; int n; // size of container int data[4] = {3, 7, 5, 4}; print(data, data+4, "normal integer array"); vector v1(4); v1[0] = 3; v1[1] = 7; v1[2] = 5; v1[3] = 4; print(v1.begin(), v1.end(), "vector data"); list l1; l1.push_back("3"); l1.push_back("7"); l1.push_back("5"); l1.push_back("4"); print(l1.begin(), l1.end(), "list data"); set s1; s1.insert(3); s1.insert(7); s1.insert(5); s1.insert(4); print(s1.begin(), s1.end(), "set data - note sorted"); multiset ms; ms.insert(3); ms.insert(7); ms.insert(5); ms.insert(4); print(ms.begin(), ms.end(), "multiset data - note sorted"); queue q1; q1.push(3); q1.push(7); q1.push(5); q1.push(4); // print(q1.begin(), q1.end(), "queue data"); // won't work cout << "special print loop for queue, destroys queue" << endl; n = q1.size(); // can not be in 'for' statement for(i=0; i pq; pq.push(4); pq.push(5); pq.push(7); pq.push(3); // print(pq.begin(), pq.end(), "priority_queue data"); // won't work cout << "special print loop for priority_queue sorted, destroys priority_queue" << endl; n = pq.size(); // can not be in 'for' statement for(i=0; i dq; dq.push_front(4); dq.push_front(5); dq.push_front(7); dq.push_front(3); // print(dq.begin(), dq.end(), "deque data"); // won't work cout << "special print loop for deque, destroys deque" << endl; n = dq.size(); // can not be in 'for' statement for(i=0; i st; st.push(4); st.push(5); st.push(7); st.push(3); // print(st.begin(), st.end(), "stack data"); won't work cout << "special print loop for stack, destroys stack" << endl; n = st.size(); // can not be in 'for' statement for(i=0; i data // 3 7 5 4 // // list data // 3 7 5 4 // // set data - note sorted // 3 4 5 7 // // multiset data - note sorted // 3 4 5 7 // // special print loop for queue, destroys queue // 3 7 5 4 // // special print loop for priority_queue sorted, destroys priority_queue // 7 5 4 3 // // special print loop for deque, destroys deque // 3 7 5 4 // // special print loop for stack, destroys stack // 3 7 5 4 //