(*sysLog) << "Loading map " << mapName << logEndl;
Для хранения наборов объектов также удобно использовать объекты специальных классов, а не встроенные массивы языка С. Такие объекты обычно называются контейнерами, и они предоставляют программисту ряд преимуществ по сравнению со стандартными массивами.
К этим преимуществам относятся в том числе автоматическое управление размером контейнера, сравнение, поиск и сортировка элементов контейнера.
Очень удобны в работе так называемые ассоциативные контейнеры, позволяющие получать доступ к элементам по произвольному ключу (например, строке).
Простейшим контейнерным классом в нашей библиотеке является класс Array. Он представляет собой обычный массив для хранения объектов, но с возможностью автоматического изменения своего размера при необходимости. Ниже приводится его описание.
typedef int (*ObjectComparator)(Object *, Object *,
void *);
class Array : public Object {
protected:
int maxltems; // current capacity of array
int numlterns; // current # of items in array
int delta; // by how much items grow array
Object ** items; // aray containing items
// (or pointers to them)
public:
Array ( const char * theName = "", int theDelta =50 ); Array ( const Arrays array ) ,--Array () ;
virtual bool isOk () const; virtual long hash () const;
virtual int compare ( const Object * obj ) const;
bool operator == ( const Arrays array ) const; bool operator != ( const Arrays array ) const {
return ! operator == ( array );
}
Object * getObjectWithName ( const Strings theName );
void removeAll (); // delete all items
int removeAtlndex ( int pos );
// delete specified item int removeObjectWithName ( const Strings theName );
Объектная модель. Основные классы
Object * insertNoRetain ( Object * item );
// insert object withouit retaining it Object * insert ( Object * item );