The CObList class supports ordered lists of nonunique CObject pointers accessible sequentially or by pointer value. CObList lists behave like doubly linked lists.
A variable of type POSITION is a kind of key for the list. You can use a POSITION variable as an iterator to sequentially traverse a list and as a bookmark to hold a place. A position is not the same as an index, however.
Element insertion is very fast at the list head, at the tail, and at a known POSITION. A sequential search is necessary in order to look up an element by value or index. This search can be slow if the list is long.
CObList incorporates the IMPLEMENT_SERIAL macro to support serialization and dumping of its elements. If a list of CObject pointers is stored to an archive, either with the overloaded insertion operator or with the Serialize member function, each CObject element is, in turn, serialized.
If you need a dump of individual CObject elements in the list, you must set the depth of the dump context to 1 or greater.
When a CObList object is deleted, or when its elements are removed, only the CObject pointers are removed, not the objects they reference.
#include <afxcoll.h>
CStringList, CPtrList
The tutorial in the Class Library User's Guide illustrates the derivation of a CPersonList class from CObList. This new list class, designed to hold pointers to CPerson objects, adds a new data member and new member functions. Note that the resulting list is not strictly “type safe” because it allows insertion of any CObject pointer.
Note:
You must use the IMPLEMENT_SERIAL macro in the implementation of your derived class if you intend to serialize the list.