tlist.cpp
Download: tlist.zip
This program demonstrates some of the features of the STL list container object.
#include "stdio.h" #include <iostream> #include <string> #include <list> using namespace std; class Label { public: string item; Label() { } Label(char *name) { item = name; } ~Label() { printf("Deleting node: %s\n",item.c_str()); } void show(); }; list<Label> labels; #define MAXC 128 char text[MAXC]; void show_list(); void main() { int i,ntag=0; Label *np; for (i=0; i<6; i++) { sprintf_s(text,MAXC-1,"tag %d",++ntag); np = new Label(text); labels.push_back(*np); } show_list(); list<Label>::iterator iter = labels.begin(); for (i=0; i<3; i++) iter++; labels.erase(iter); cout << "after labels.erase(iter):\n"; show_list(); cout << "after labels.reverse():\n"; labels.reverse(); show_list(); } void Label::show() { cout << item << endl; } void show_list() { cout << "start_list (" << labels.size() << " members)" << endl; list<Label>::iterator iter; for (iter=labels.begin(); iter!=labels.end(); iter++) { cout << (*iter).item << endl; } cout << "end_list" << endl; }
start_list (6 members) tag 1 tag 2 tag 3 tag 4 tag 5 tag 6 end_list Deleting node: tag 4 after labels.erase(iter): start_list (5 members) tag 1 tag 2 tag 3 tag 5 tag 6 end_list after labels.reverse(): start_list (5 members) tag 6 tag 5 tag 3 tag 2 tag 1 end_list Deleting node: tag 6 Deleting node: tag 5 Deleting node: tag 3 Deleting node: tag 2 Deleting node: tag 1
Here is the output with the last three lines of the program (reversing the list) commented out:
start_list (6 members) tag 1 tag 2 tag 3 tag 4 tag 5 tag 6 end_list Deleting node: tag 4 after labels.erase(iter): start_list (5 members) tag 1 tag 2 tag 3 tag 5 tag 6 end_list Deleting node: tag 1 Deleting node: tag 2 Deleting node: tag 3 Deleting node: tag 5 Deleting node: tag 6
Maintained by John Loomis, updated Tue Feb 13 13:39:48 2007