Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Func.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.58 Mб
Скачать

CObArray::Add

int Add( CObject* newElement ); throw( CMemoryException );

Возвращаемое значение

Индекс добавленного в массив элемента.

Аргументы

  1. newElement — указатель на объект класса CObject, добавляемый в массив.

Примечание

Добавляет новый элемент в конец массива, увеличивая его размер на 1. Если в функции SetSize аргумент nGrowBy имеет значение больше 1 и увеличение размера массива на 1 привело к выходу за пределы отведённой ему памяти, то для массива выделяется дополнительная память, в которую могут быть записаны новые элементы без новой операции выделения памяти, размер которой определяется аргументом nGrowBy функции SetSize.

Соответствующие функции, отличающиеся только типом своих аргументов, имеются в классах CByteArray, CDWordArray, CPtrArray, CStringArray, CUIntArray è CWordArray.

Пример

CObArray array;

array.Add( new CAge( 21 ) ); // Элемент 0

array.Add( new CAge( 40 ) ); // Элемент 1

#ifdef _DEBUG

afxDump.SetDepth( 1 );

afxDump << "Add example: " << &array << "\n";

#endif

Результат выполнения функции:

Add example: A CObArray with 2 elements

[0] = a CAge at $442A 21

[1] = a CAge at $4468 40

CObArray::GetSize

int GetSize( ) const;

Возвращаемое значение

Размер массива.

Примечание

Возвращает размер массива. Поскольку первый элемент массива имеет нулевой индекс, размер массива всегда на 1 превышает максимальный индекс элемента массива.

Идентичная функция имеется в классах CByteArray, CDWordArray, CPtrArray, CStringArray, CUIntArray è CWordArray.

CObArray::operator [ ]

CObject*& operator []( int nIndex );

CObject* operator []( int nIndex ) const;

Примечание

Эти операторы могут использоваться вместо функций SetAt и GetAt. Первый оператор используется для обычных массивов и может вызываться как с левой, так и справой стороны от оператора присваивания. Второй оператор используется для массивов констант и может вызываться только с правой стороны оператора присваивания.

В отладочной версии библиотеки производится проверка того, что используемый индекс массива находится в разрешённом диапазоне значений.

Соответствующие операторы, отличающиеся только типом своих возвращаемых значений, имеются в классах CByteArray, CDWordArray, CPtrArray, CStringArray, CUIntArray è CWordArray.

Пример

CObArray array;

CAge* pa;

array.Add( new CAge( 21 ) ); // Элемент 0

array.Add( new CAge( 40 ) ); // Элемент 1

pa = (CAge*)array[0]; // Получение указателя на элемент 0

ASSERT( *pa == CAge( 21 ) ); // Проверка содержимого элемента 0

array[0] = new CAge( 30 ); // Замена элемента 0

delete pa;

ASSERT( *(CAge*) array[0] == CAge( 30 ) );

CObArray::RemoveAll

void RemoveAll( );

Примечание

Удаляет все указатели из массива, но не уничтожает сами объекты класса CObject. Если массив уже пуст, функция всё равно работает. Функция RemoveAll освобождает всю память, используемую для хранения указателей.

Идентичная функция имеется в классах CByteArray, CDWordArray, CPtrArray, CStringArray, CUIntArray è CWordArray.

Пример

CObArray array;

CAge* pa1;

CAge* pa2;

array.Add( pa1 = new CAge( 21 ) ); // Элемент 0

array.Add( pa2 = new CAge( 40 ) ); // Элемент 1

ASSERT( array.GetSize() == 2 );

array.RemoveAll(); // Уничтожаются указатели, а не объекты.

ASSERT( array.GetSize() == 0 );

delete pa1;

delete pa2; // Очистка памяти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]