tlist.cppDownload: 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