Listing 3: Definition of class StrList, an enhanced list of strings

#ifndef _my_stl_defs_
#define _my_stl_defs_

#include <list>
#include <map>

typedef map<string, string*> StringMap;
typedef StringMap::iterator sm_iter;

typedef map<string, int*> IntMap;
typedef IntMap::iterator im_iter;

typedef map<string, bool*> BoolMap;
typedef BoolMap::iterator bm_iter;

... // other stuff not shown here

typedef list<string>::iterator sl_It;
class StrList : public list <string>
{       
public:
    StrList();
    ~StrList();
    sl_It Insert_A_Before_B(const string& A, const string& B);
    sl_It Insert_A_After_B(const string& A, const string& B);
    void Append(const char* sz);
    void Append(const string& str);
    sl_It Insert(sl_It pos, const string& str);
    sl_It Insert(sl_It pos, const char *sz);
    bool WriteFile(const char* sz_file_name);
};