Метод at позволяет получить доступ к элементу массива по его индексу.

Методы getCount и getNiunltems возвращают количество элементов в массиве.

Метод isEmpty возвращает true, если в массиве содержится хотя бы один объект.

Метод sort позволяет отсортировать элементы массива с использованием переданной функции сравнения объектов.

Для обхода контейнерных классов удобно использовать паттерн "Итератор" [12]. Внутри каждого из основных контейнерных классов определяется специальный класс Iterator, реализующий метод обхода элементов контейнера. У каждого контейнерного класса должен быть свой метод getltera-tor, возвращающий итератор на данный контейнер.

У каждого итератора определяются следующие базовые методы: end(), valueQ и ++.

Метод end возвращает признак того, находится ли итератор в конце контейнера.

Метод value возвращает указатель на очередной объект, на который показывает итератор.

Метод ++ служит для перемещения итератора к следующему объекту.

Еще одним полезным классом служит класс Set, являющийся непосредственным аналогом обыкновенного множества. В нем каждый объект может храниться только в одном экземпляре (в отличие от класса Array) и существует возможность быстрой проверки наличия объекта в контейнере (без полного перебора всех элементов).

Для реализации быстрого поиска объектов внутри контейнера используется хеш-таблица, ключ в которую выбирается исходя из значения, возвращаемого методом hash. Подобный подход позволяет очень быстро находить нужный объект.

.П.

class Set : public Object {
struct Hashltem {
Hashltem * next; // pointer to next item in chain Object * data; // object being stored long hashValue;
};
private:
Hashltem ** hashTable; int hashSize;
// table contains hashSize elements int numlterns;
static MemoryPool pool; // pool of Hashltems public:
class Iterator // set iterator
{
private:
const Set * set; // set we're iterating on
int hashlndex; // index into hash table

⇐ Предыдущая| |Следующая ⇒