Класс CObArray
Поддерживает массивы указателей CObject
.
Синтаксис
class CObArray : public CObject
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CObArray::CObArray |
Создает пустой массив для CObject указателей. |
Открытые методы
Имя | Описание |
---|---|
CObArray::Add |
Добавляет элемент в конец массива. При необходимости размер массива увеличивается. |
CObArray::Append |
Добавляет другой массив к массиву. При необходимости размер массива увеличивается. |
CObArray::Copy |
Копирует другой массив в этот массив. При необходимости размер массива увеличивается. |
CObArray::ElementAt |
Возвращает временную ссылку на указатель элемента в массиве. |
CObArray::FreeExtra |
Освобождает всю неиспользуемую память сверх текущей верхней границы. |
CObArray::GetAt |
Возвращает значение по указанному индексу. |
CObArray::GetCount |
Возвращает количество элементов в массиве. |
CObArray::GetData |
Разрешает доступ к элементам в массиве. Может иметь значение NULL . |
CObArray::GetSize |
Возвращает количество элементов в массиве. |
CObArray::GetUpperBound |
Возвращает самый большой допустимый индекс. |
CObArray::InsertAt |
Вставляет элемент (или все элементы в другом массиве) по указанному индексу. |
CObArray::IsEmpty |
Определяет, пуст ли массив. |
CObArray::RemoveAll |
Удаляет все элементы из этого массива. |
CObArray::RemoveAt |
Удаляет элемент по указанному индексу. |
CObArray::SetAt |
Задает значение для указанного индекса. Размер массива не увеличивается. |
CObArray::SetAtGrow |
Задает значение для указанного индекса. При необходимости размер массива увеличивается. |
CObArray::SetSize |
Задает число элементов, которые будут храниться в этом массиве. |
Открытые операторы
Имя | Описание |
---|---|
CObArray::operator [] |
Получает или задает элемент с указанным индексом. |
Замечания
Эти массивы объектов похожи на массивы C, но они могут динамически сжиматься и увеличиваться по мере необходимости.
Индексы массива всегда начинаются с позиции 0. Можно решить, следует ли исправить верхнюю границу или разрешить массиву расширяться при добавлении элементов после текущей границы. Память выделяется последовательно к верхней границе, даже если некоторые элементы находятся NULL
в пределах.
В разделе Win32 размер CObArray
объекта ограничен только доступной памятью.
Как и в массиве C, время доступа для CObArray
индексированного элемента является константой и не зависит от размера массива.
CObArray
использует макрос IMPLEMENT_SERIAL
для поддержки сериализации и записи элементов в дамп. Если массив указателей CObject
хранится в архиве либо с перегруженным оператором вставки, либо с Serialize
функцией-членом, каждый CObject
элемент в свою очередь сериализован вместе с его индексом массива.
Если требуется дампа отдельных CObject
элементов в массиве, необходимо задать глубину CDumpContext
объекта равным 1 или больше.
CObArray
При удалении объекта или при удалении его элементов удаляются только CObject
указатели, а не объекты, на которые они ссылаются.
Примечание.
Перед работой с массивом используйте функцию SetSize
, чтобы определить его размер и выделить под него память. Если не использовать функцию SetSize
, при добавлении элементов в массив он будет часто копироваться и для него снова и снова будет повторно выделяться память. Это может привести к ухудшению производительности и фрагментации памяти.
Производный класс массива аналогичен выводу списка. Дополнительные сведения о производных классах списка специального назначения см. в статье "Коллекции".
Примечание.
Если вы планируете сериализовать массив, необходимо использовать макрос IMPLEMENT_SERIAL в реализации производного класса.
Иерархия наследования
CObArray
Требования
Заголовок: afxcoll.h
CObArray::Add
Добавляет новый элемент в конец массива, увеличивая массив на 1.
INT_PTR Add(CObject* newElement);
Параметры
newElement
Указатель CObject
, добавляемый в этот массив.
Возвращаемое значение
Индекс добавленного элемента.
Замечания
Если SetSize
используется значение nGrowBy
больше 1, то может быть выделена дополнительная память. Однако верхняя граница будет увеличиваться только на 1.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::Add
на .
Класс | Функция-член |
---|---|
CByteArray |
INT_PTR Add(BYTE newElement); throw(CMemoryException*); |
CDWordArray |
INT_PTR Add(DWORD newElement); throw(CMemoryException*); |
CPtrArray |
INT_PTR Add(void* newElement); throw(CMemoryException*); |
CStringArray |
INT_PTR Add(LPCTSTR newElement); throw(CMemoryException*); INT_PTR Add(const CString& newElement); |
CUIntArray |
INT_PTR Add(UINT newElement); throw(CMemoryException*); |
CWordArray |
INT_PTR Add(WORD newElement); throw(CMemoryException*); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("Add example: ") << &arr << _T("\n");
#endif
Результаты этой программы приведены следующим образом:
Add example: A CObArray with 2 elements
[0] = a CAge at $442A 21
[1] = a CAge at $4468 40
CObArray::Append
Вызовите эту функцию-член, чтобы добавить содержимое другого массива в конец данного массива.
INT_PTR Append(const CObArray& src);
Параметры
src
Источник элементов, добавляемых в массив.
Возвращаемое значение
Индекс первого добавленного элемента.
Замечания
Массивы должны иметь одинаковый тип.
При необходимости может выделить дополнительную память для размещения элементов, Append
добавленных в массив.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::Append
на .
Класс | Функция-член |
---|---|
CByteArray |
INT_PTR Append(const CByteArray& src); |
CDWordArray |
INT_PTR Append(const CDWordArray& src); |
CPtrArray |
INT_PTR Append(const CPtrArray& src); |
CStringArray |
INT_PTR Append(const CStringArray& src); |
CUIntArray |
INT_PTR Append(const CUIntArray& src); |
CWordArray |
INT_PTR Append(const CWordArray& src); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray myArray1, myArray2;
// Add elements to the second array.
myArray2.Add(new CAge(21));
myArray2.Add(new CAge(42));
// Add elements to the first array and also append the second array.
myArray1.Add(new CAge(3));
myArray1.Append(myArray2);
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("myArray1: ") << &myArray1 << _T("\n");
afxDump << _T("myArray2: ") << &myArray2 << _T("\n");
#endif
CObArray::Copy
Вызовите эту функцию-член, чтобы перезаписать элементы заданного массива с элементами другого массива того же типа.
void Copy(const CObArray& src);
Параметры
src
Источник элементов, копируемых в массив.
Замечания
Copy
не освобождает память. При необходимости может выделить дополнительную память для размещения элементов, Copy
скопированных в массив.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::Copy
на .
Класс | Функция-член |
---|---|
CByteArray |
void Copy(const CByteArray& src); |
CDWordArray |
void Copy(const CDWordArray& src); |
CPtrArray |
void Copy(const CPtrArray& src); |
CStringArray |
void Copy(const CStringArray& src); |
CUIntArray |
void Copy(const CUIntArray& src); |
CWordArray |
void Copy(const CWordArray& src); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray myArray1, myArray2;
// Add elements to the second array.
myArray2.Add(new CAge(21));
myArray2.Add(new CAge(42));
// Copy the elements from the second array to the first.
myArray1.Copy(myArray2);
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << "myArray1: " << &myArray1 << "\n";
afxDump << "myArray2: " << &myArray2 << "\n";
#endif
CObArray::CObArray
Создает пустой CObject
массив указателя.
CObArray();
Замечания
Массив увеличивает один элемент за раз.
В следующей таблице показаны другие конструкторы, которые похожи CObArray::CObArray
на .
Класс | Конструктор |
---|---|
CByteArray |
CByteArray(); |
CDWordArray |
CDWordArray(); |
CPtrArray |
CPtrArray(); |
CStringArray |
CStringArray(); |
CUIntArray |
CUIntArray(); |
CWordArray |
CWordArray(); |
Пример
CObArray arr; //Array with default blocksize
CObArray* pArray = new CObArray; //Array on the heap with default blocksize
CObArray::ElementAt
Возвращает временную ссылку на указатель элемента в массиве.
CObject*& ElementAt(INT_PTR nIndex);
Параметры
nIndex
Целочисленный индекс, который больше или равен 0 и меньше или равен значению, возвращаемого GetUpperBound
.
Возвращаемое значение
Ссылка на CObject
указатель.
Замечания
Он используется для реализации оператора назначения слева для массивов. Это расширенная функция, которая должна использоваться только для реализации специальных операторов массива.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::ElementAt
на .
Класс | Функция-член |
---|---|
CByteArray |
BYTE& ElementAt(INT_PTR nIndex); |
CDWordArray |
DWORD& ElementAt(INT_PTR nIndex); |
CPtrArray |
void*& ElementAt(INT_PTR nIndex); |
CStringArray |
CString& ElementAt(INT_PTR nIndex); |
CUIntArray |
UINT& ElementAt(INT_PTR nIndex); |
CWordArray |
WORD& ElementAt(INT_PTR nIndex); |
Пример
Пример см. в примере CObArray::GetSize
.
CObArray::FreeExtra
Освобождает дополнительную память, выделенную во время роста массива.
void FreeExtra();
Замечания
Эта функция не влияет на размер или верхнюю границу массива.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::FreeExtra
на .
Класс | Функция-член |
---|---|
CByteArray |
void FreeExtra(); |
CDWordArray |
void FreeExtra(); |
CPtrArray |
void FreeExtra(); |
CStringArray |
void FreeExtra(); |
CUIntArray |
void FreeExtra(); |
CWordArray |
void FreeExtra(); |
Пример
Пример см. в примере CObArray::GetData
.
CObArray::GetAt
Возвращает элемент массива по указанному индексу.
CObject* GetAt(INT_PTR nIndex) const;
Параметры
nIndex
Целочисленный индекс, который больше или равен 0 и меньше или равен значению, возвращаемого GetUpperBound
.
Возвращаемое значение
Элемент CObject
указателя в данный момент в этом индексе.
Замечания
Примечание.
Передача отрицательного значения или значения, превышающего возвращаемое GetUpperBound
значением, приведет к сбою утверждения.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::GetAt
на .
Класс | Функция-член |
---|---|
CByteArray |
BYTE GetAt(INT_PTR nIndex) const; |
CDWordArray |
DWORD GetAt(INT_PTR nIndex) const; |
CPtrArray |
void* GetAt(INT_PTR nIndex) const; |
CStringArray |
const CString& GetAt(INT_PTR nIndex) const; |
CUIntArray |
UINT GetAt(INT_PTR nIndex) const; |
CWordArray |
WORD GetAt(INT_PTR nIndex) const; |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
ASSERT(*(CAge*) arr.GetAt(0) == CAge(21));
CObArray::GetCount
Возвращает количество элементов массива.
INT_PTR GetCount() const;
Возвращаемое значение
Количество элементов в массиве.
Замечания
Вызовите этот метод, чтобы получить количество элементов в массиве. Так как индексы основаны на нулях, размер составляет 1 больше, чем самый большой индекс.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::GetCount
на .
Класс | Функция-член |
---|---|
CByteArray |
INT_PTR GetCount() const; |
CDWordArray |
INT_PTR GetCount() const; |
CPtrArray |
INT_PTR GetCount() const; |
CStringArray |
INT_PTR GetCount() const; |
CUIntArray |
INT_PTR GetCount() const; |
CWordArray |
INT_PTR GetCount() const; |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray myArray;
// Add elements to the array.
for (int i = 0; i < 10; i++)
myArray.Add(new CAge(i));
// Add 100 to all the elements of the array.
for (int i = 0; i < myArray.GetCount(); i++)
{
CAge*& pAge = (CAge*&) myArray.ElementAt(i);
delete pAge;
pAge = new CAge(100 + i);
}
CObArray::GetData
Используйте эту функцию-член, чтобы получить прямой доступ к элементам в массиве.
const CObject** GetData() const;
CObject** GetData();
Возвращаемое значение
Указатель на массив указателей CObject
.
Замечания
Если элементы недоступны, GetData
возвращает NULL
значение.
Хотя прямой доступ к элементам массива может помочь вам быстрее работать, используйте осторожность при вызове GetData
; любые ошибки, которые вы вносите непосредственно на элементы массива.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::GetData
на .
Класс | Функция-член |
---|---|
CByteArray | const BYTE* GetData() const; BYTE* GetData(); |
CDWordArray | const DWORD* GetData() const; DWORD* GetData(); |
CPtrArray | const void** GetData() const; void** GetData(); |
CStringArray | const CString* GetData() const; CString* GetData(); |
CUIntArray | const UINT* GetData() const; UINT* GetData(); |
CWordArray | const WORD* GetData() const; WORD* GetData(); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray myArray;
// Allocate memory for at least 32 elements.
myArray.SetSize(32, 128);
// Add elements to the array.
CAge** ppAge = (CAge * *)myArray.GetData();
for (int i = 0; i < 32; i++, ppAge++)
* ppAge = new CAge(i);
// Only keep first 5 elements and free extra (unused) bytes.
for (int i = 5; i < myArray.GetCount(); i++)
{
delete myArray[i]; // free objects before resetting array size.
}
myArray.SetSize(5, 128);
myArray.FreeExtra(); // only frees pointers.
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("myArray: ") << &myArray << _T("\n");
#endif
CObArray::GetSize
Возвращает размер массива.
INT_PTR GetSize() const;
Замечания
Так как индексы основаны на нулях, размер составляет 1 больше, чем самый большой индекс.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::GetSize
на .
Класс | Функция-член |
---|---|
CByteArray |
INT_PTR GetSize() const; |
CDWordArray |
INT_PTR GetSize() const; |
CPtrArray |
INT_PTR GetSize() const; |
CStringArray |
INT_PTR GetSize() const; |
CUIntArray |
INT_PTR GetSize() const; |
CWordArray |
INT_PTR GetSize() const; |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray myArray;
// Add elements to the array.
for (int i = 0; i < 10; i++)
myArray.Add(new CAge(i));
// Add 100 to all the elements of the array.
for (int i = 0; i < myArray.GetSize(); i++)
{
CAge*& pAge = (CAge * &)myArray.ElementAt(i);
delete pAge;
pAge = new CAge(100 + i);
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("myArray: ") << &myArray << _T("\n");
#endif
CObArray::GetUpperBound
Возвращает текущую верхнюю границу этого массива.
INT_PTR GetUpperBound() const;
Возвращаемое значение
Индекс верхней границы (от нуля).
Замечания
Так как индексы массива основаны на нулях, эта функция возвращает значение 1 меньше GetSize
.
Условие GetUpperBound() = -1
указывает, что массив не содержит элементов.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::GetUpperBound
на .
Класс | Функция-член |
---|---|
CByteArray |
INT_PTR GetUpperBound() const; |
CDWordArray |
INT_PTR GetUpperBound() const; |
CPtrArray |
INT_PTR GetUpperBound() const; |
CStringArray |
INT_PTR GetUpperBound() const; |
CUIntArray |
INT_PTR GetUpperBound() const; |
CWordArray |
INT_PTR GetUpperBound() const; |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
ASSERT(arr.GetUpperBound() == 1); // Largest index
CObArray::InsertAt
Вставляет элемент (или все элементы в другом массиве) по указанному индексу.
void InsertAt(
INT_PTR nIndex,
CObject* newElement,
INT_PTR nCount = 1);
void InsertAt(
INT_PTR nStartIndex,
CObArray* pNewArray);
Параметры
nIndex
Целочисленный индекс, который может быть больше значения, возвращаемого GetUpperBound
.
newElement
Указатель CObject
, который нужно поместить в этот массив. Допускается значение newElement
NULL
.
nCount
Количество вставок этого элемента (по умолчанию — 1).
nStartIndex
Целочисленный индекс, который может быть больше значения, возвращаемого GetUpperBound
.
pNewArray
Другой массив, содержащий элементы, добавляемые в этот массив.
Замечания
Первая версия InsertAt
вставки одного элемента (или нескольких копий элемента) по указанному индексу в массиве. В процессе он сдвигается (путем увеличения индекса) существующего элемента в этом индексе, и он сдвигает все элементы над ним.
Вторая версия вставляет все элементы из другой CObArray
коллекции, начиная с nStartIndex
позиции.
Функция SetAt
, напротив, заменяет один указанный элемент массива и не сдвигает элементы.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::InsertAt
на .
Класс | Функция-член |
---|---|
CByteArray |
void InsertAt(INT_PTR nIndex, BYTE newElement, int nCount = 1); throw(CMemoryException*); void InsertAt(INT_PTR nStartIndex, CByteArray* pNewArray); throw(CMemoryException*); |
CDWordArray |
void InsertAt(INT_PTR nIndex, DWORD newElement, int nCount = 1); throw(CMemoryException*); void InsertAt(INT_PTR nStartIndex, CDWordArray* pNewArray); throw(CMemoryException*); |
CPtrArray |
void InsertAt(INT_PTR nIndex, void* newElement, int nCount = 1); throw(CMemoryException*); void InsertAt(INT_PTR nStartIndex, CPtrArray* pNewArray); throw(CMemoryException*); |
CStringArray |
void InsertAt(INT_PTR nIndex, LPCTSTR newElement, int nCount = 1); throw(CMemoryException*); void InsertAt(INT_PTR nStartIndex, CStringArray* pNewArray); throw(CMemoryException*); |
CUIntArray |
void InsertAt(INT_PTR nIndex, UINT newElement, int nCount = 1); throw(CMemoryException*); void InsertAt(INT_PTR nStartIndex, CUIntArray* pNewArray); throw(CMemoryException*); |
CWordArray |
void InsertAt(INT_PTR nIndex, WORD newElement, int nCount = 1); throw(CMemoryException*); void InsertAt(INT_PTR nStartIndex, CWordArray* pNewArray); throw(CMemoryException*); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1 (will become 2).
arr.InsertAt(1, new CAge(30)); // New element 1
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("InsertAt example: ") << &arr << _T("\n");
#endif
Результаты этой программы приведены следующим образом:
InsertAt example: A CObArray with 3 elements
[0] = a CAge at $45C8 21
[1] = a CAge at $4646 30
[2] = a CAge at $4606 40
CObArray::IsEmpty
Определяет, пуст ли массив.
BOOL IsEmpty() const;
Возвращаемое значение
Ненулевое значение, если массив пуст; в противном случае — 0.
CObArray::operator [ ]
Эти операторы подстрока являются удобной заменой для SetAt
функций и GetAt
функций.
CObject*& operator[](int_ptr nindex);
CObject* operator[](int_ptr nindex) const;
Замечания
Первый оператор, который вызывается для массивов, которые не const
являются, можно использовать в правом (r-value) или левом (l-value) инструкции назначения. Второй, вызываемой для const
массивов, может использоваться только справа.
Отладочная версия библиотеки утверждает, что подстрок (слева или справа от оператора назначения) выходит за рамки.
В следующей таблице показаны другие операторы, которые похожи CObArray::operator []
на .
Класс | Оператор |
---|---|
CByteArray |
BYTE& operator [](INT_PTR nindex); BYTE operator [](INT_PTR nindex) const; |
CDWordArray |
DWORD& operator [](INT_PTR nindex); DWORD operator [](INT_PTR nindex) const; |
CPtrArray |
void*& operator [](INT_PTR nindex); void* operator [](INT_PTR nindex) const; |
CStringArray |
CString& operator [](INT_PTR nindex); CString operator [](INT_PTR nindex) const; |
CUIntArray |
UINT& operator [](INT_PTR nindex); UINT operator [](INT_PTR nindex) const; |
CWordArray |
WORD& operator [](INT_PTR nindex); WORD operator [](INT_PTR nindex) const; |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
CAge* pa;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
pa = (CAge*)arr[0]; // Get element 0
ASSERT(*pa == CAge(21)); // Get element 0
arr[0] = new CAge(30); // Replace element 0
delete pa;
ASSERT(*(CAge*)arr[0] == CAge(30)); // Get new element 0
CObArray::RemoveAll
Удаляет все указатели из этого массива, но не удаляет CObject
объекты.
void RemoveAll();
Замечания
Если массив уже пуст, функция по-прежнему работает.
Функция RemoveAll
освобождает всю память, используемую для хранения указателей.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::RemoveAll
на .
Класс | Функция-член |
---|---|
CByteArray |
void RemoveAll(); |
CDWordArray |
void RemoveAll(); |
CPtrArray |
void RemoveAll(); |
CStringArray |
void RemoveAll(); |
CUIntArray |
void RemoveAll(); |
CWordArray |
void RemoveAll(); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
CAge* pa1;
CAge* pa2;
arr.Add(pa1 = new CAge(21)); // Element 0
arr.Add(pa2 = new CAge(40)); // Element 1
ASSERT(arr.GetSize() == 2);
arr.RemoveAll(); // Pointers removed but objects not deleted.
ASSERT(arr.GetSize() == 0);
delete pa1;
delete pa2; // Cleans up memory.
CObArray::RemoveAt
Удаляет один или несколько элементов, начиная с указанного индекса в массиве.
void RemoveAt(
INT_PTR nIndex,
INT_PTR nCount = 1);
Параметры
nIndex
Целочисленный индекс, который больше или равен 0 и меньше или равен значению, возвращаемого GetUpperBound
.
nCount
Число удаляемых элементов.
Замечания
В процессе он сдвигает все элементы над удаленными элементами. Он уменьшает верхнюю границу массива, но не освобождает память.
Если вы пытаетесь удалить больше элементов, чем они содержатся в массиве выше точки удаления, то версия отладки библиотеки утверждает.
Функция RemoveAt
удаляет CObject
указатель из массива, но не удаляет сам объект.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::RemoveAt
на .
Класс | Функция-член |
---|---|
CByteArray |
void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1); |
CDWordArray |
void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1); |
CPtrArray | void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1); |
CStringArray |
void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1); |
CUIntArray |
void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1); |
CWordArray |
void RemoveAt(INT_PTR nIndex, INT_PTR nCount = 1); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
CObject* pa;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
if ((pa = arr.GetAt(0)) != NULL)
{
arr.RemoveAt(0); // Element 1 moves to 0.
delete pa; // Delete the original element at 0.
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("RemoveAt example: ") << &arr << _T("\n");
#endif
Результаты этой программы приведены следующим образом:
RemoveAt example: A CObArray with 1 elements
[0] = a CAge at $4606 40
CObArray::SetAt
Задает элемент массива по указанному индексу.
void SetAt(
INT_PTR nIndex,
CObject* newElement);
Параметры
nIndex
Целочисленный индекс, который больше или равен 0 и меньше или равен значению, возвращаемого GetUpperBound
.
newElement
Указатель объекта, который нужно вставить в этот массив. Допускается NULL
значение.
Замечания
SetAt
Не приведет к росту массива. Используйте SetAtGrow
, если вы хотите, чтобы массив рос автоматически.
Убедитесь, что значение индекса представляет допустимую позицию в массиве. Если она не ограничена, то утверждается отладочная версия библиотеки.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::SetAt
на .
Класс | Функция-член |
---|---|
CByteArray |
void SetAt(INT_PTR nIndex, BYTE newElement); |
CDWordArray |
void SetAt(INT_PTR nIndex, DWORD newElement); |
CPtrArray |
void SetAt(INT_PTR nIndex, void* newElement); |
CStringArray |
void SetAt(INT_PTR nIndex, LPCTSTR newElement); |
CUIntArray |
void SetAt(INT_PTR nIndex, UINT newElement); |
CWordArray |
void SetAt(INT_PTR nIndex, WORD newElement); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
CObject* pa;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
if ((pa = arr.GetAt(0)) != NULL)
{
arr.SetAt(0, new CAge(30)); // Replace element 0.
delete pa; // Delete the original element at 0.
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("SetAt example: ") << &arr << _T("\n");
#endif
Результаты этой программы приведены следующим образом:
SetAt example: A CObArray with 2 elements
[0] = a CAge at $47E0 30
[1] = a CAge at $47A0 40
CObArray::SetAtGrow
Задает элемент массива по указанному индексу.
void SetAtGrow(
INT_PTR nIndex,
CObject* newElement);
Параметры
nIndex
Целый индекс, превышающий или равный 0.
newElement
Указатель объекта, добавляемый в этот массив. Допускается NULL
значение.
Замечания
При необходимости массив автоматически увеличивается (т. е. верхняя граница корректируется для размещения нового элемента).
В следующей таблице показаны другие функции-члены, которые похожи CObArray::SetAtGrow
на .
Класс | Функция-член |
---|---|
CByteArray |
void SetAtGrow(INT_PTR nIndex, BYTE newElement); throw(CMemoryException*); |
CDWordArray |
void SetAtGrow(INT_PTR nIndex, DWORD newElement); throw(CMemoryException*); |
CPtrArray |
void SetAtGrow(INT_PTR nIndex, void* newElement); throw( CMemoryException*); |
CStringArray |
void SetAtGrow(INT_PTR nIndex, LPCTSTR newElement); throw(CMemoryException*); |
CUIntArray |
void SetAtGrow(INT_PTR nIndex, UINT newElement); throw(CMemoryException*); |
CWordArray |
void SetAtGrow(INT_PTR nIndex, WORD newElement); throw(CMemoryException*); |
Пример
См CObList::CObList
. описание класса, используемого CAge
во всех примерах коллекции.
CObArray arr;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
arr.SetAtGrow(3, new CAge(65)); // Element 2 deliberately
// skipped.
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("SetAtGrow example: ") << &arr << _T("\n");
#endif
Результаты этой программы приведены следующим образом:
SetAtGrow example: A CObArray with 4 elements
[0] = a CAge at $47C0 21
[1] = a CAge at $4800 40
[2] = NULL
[3] = a CAge at $4840 65
CObArray::SetSize
Устанавливает размер пустого или существующего массива; при необходимости выделяет память.
void SetSize(
INT_PTR nNewSize,
INT_PTR nGrowBy = -1);
Параметры
nNewSize
Новый размер массива (количество элементов). Должно быть больше или равно 0.
nGrowBy
Минимальное количество слотов элементов, выделяемых при необходимости увеличения размера.
Замечания
Если новый размер меньше старого размера, массив усечен и освобождается неиспользуемая память. Для повышения эффективности вызовите SetSize
настройку размера массива перед его использованием. Это предотвращает необходимость перераспределять и копировать массив при каждом добавлении элемента.
Параметр nGrowBy
влияет на выделение внутренней памяти во время роста массива. Его использование никогда не влияет на размер массива, как сообщается GetSize
и GetUpperBound
.
Если размер массива вырос, для всех вновь выделенных CObject *
указателей задано значение NULL
.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::SetSize
на .
Класс | Функция-член |
---|---|
CByteArray |
void SetSize(INT_PTR nNewSize, int nGrowBy = -1); throw(CMemoryException*); |
CDWordArray |
void SetSize(INT_PTR nNewSize, int nGrowBy = -1); throw(CMemoryException*); |
CPtrArray |
void SetSize(INT_PTR nNewSize, int nGrowBy = -1); throw(CMemoryException*); |
CStringArray |
void SetSize(INT_PTR nNewSize, int nGrowBy = -1); throw(CMemoryException*); |
CUIntArray |
void SetSize(INT_PTR nNewSize, int nGrowBy = -1); throw(CMemoryException*); |
CWordArray |
void SetSize(INT_PTR nNewSize, int nGrowBy = -1); throw(CMemoryException*); |
Пример
Пример см. в примере CObArray::GetData
.
См. также
CObject
Класс
Диаграмма иерархии
CStringArray
Класс
CPtrArray
Класс
CByteArray
Класс
CWordArray
Класс
CDWordArray
Класс