Класс 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
Добавляет новый элемент в конец массива, увеличивая массив на 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
Вызовите эту функцию-член, чтобы добавить содержимое другого массива в конец данного массива.
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
Вызовите эту функцию-член, чтобы перезаписать элементы заданного массива с элементами другого массива того же типа.
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
Создает пустой 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
Возвращает временную ссылку на указатель элемента в массиве.
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
.
Освобождает дополнительную память, выделенную во время роста массива.
void FreeExtra();
Эта функция не влияет на размер или верхнюю границу массива.
В следующей таблице показаны другие функции-члены, которые похожи CObArray::FreeExtra
на .
Класс | Функция-член |
---|---|
CByteArray |
void FreeExtra(); |
CDWordArray |
void FreeExtra(); |
CPtrArray |
void FreeExtra(); |
CStringArray |
void FreeExtra(); |
CUIntArray |
void FreeExtra(); |
CWordArray |
void FreeExtra(); |
Пример см. в примере CObArray::GetData
.
Возвращает элемент массива по указанному индексу.
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));
Возвращает количество элементов массива.
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);
}
Используйте эту функцию-член, чтобы получить прямой доступ к элементам в массиве.
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
Возвращает размер массива.
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
Возвращает текущую верхнюю границу этого массива.
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
Вставляет элемент (или все элементы в другом массиве) по указанному индексу.
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
Определяет, пуст ли массив.
BOOL IsEmpty() const;
Ненулевое значение, если массив пуст; в противном случае — 0.
Эти операторы подстрока являются удобной заменой для 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
Удаляет все указатели из этого массива, но не удаляет 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.
Удаляет один или несколько элементов, начиная с указанного индекса в массиве.
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
Задает элемент массива по указанному индексу.
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
Задает элемент массива по указанному индексу.
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
Устанавливает размер пустого или существующего массива; при необходимости выделяет память.
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
Класс