Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Suporta matrizes de CObject ponteiros.
Sintaxe
class CObArray : public CObject
Membros
Construtores Públicos
| Nome | Descrição |
|---|---|
CObArray::CObArray |
Constrói uma matriz vazia para CObject ponteiros. |
Métodos Públicos
| Nome | Descrição |
|---|---|
CObArray::Add |
Adiciona um elemento ao final da matriz; Aumenta a matriz, se necessário. |
CObArray::Append |
Acrescenta outra matriz à matriz; Aumenta a matriz, se necessário. |
CObArray::Copy |
Copia outra matriz para a matriz; Aumenta a matriz, se necessário. |
CObArray::ElementAt |
Retorna uma referência temporária ao ponteiro do elemento dentro da matriz. |
CObArray::FreeExtra |
Libera toda a memória não utilizada acima do limite superior atual. |
CObArray::GetAt |
Devolve o valor a um determinado índice. |
CObArray::GetCount |
Obtém o número de elementos nessa matriz. |
CObArray::GetData |
Permite o acesso a elementos na matriz. Pode ser NULL. |
CObArray::GetSize |
Obtém o número de elementos nessa matriz. |
CObArray::GetUpperBound |
Devolve o maior índice válido. |
CObArray::InsertAt |
Insere um elemento (ou todos os elementos em outra matriz) em um índice especificado. |
CObArray::IsEmpty |
Determina se a matriz está vazia. |
CObArray::RemoveAll |
Remove todos os elementos dessa matriz. |
CObArray::RemoveAt |
Remove um elemento em um índice específico. |
CObArray::SetAt |
Define o valor de um determinado índice; matriz não permitida a crescer. |
CObArray::SetAtGrow |
Define o valor de um determinado índice; Aumenta a matriz, se necessário. |
CObArray::SetSize |
Define o número de elementos a serem contidos nessa matriz. |
Operadores Públicos
| Nome | Descrição |
|---|---|
CObArray::operator [] |
Define ou obtém o elemento no índice especificado. |
Observações
Essas matrizes de objetos são semelhantes às matrizes C, mas podem diminuir e crescer dinamicamente conforme necessário.
Os índices de matriz sempre começam na posição 0. Você pode decidir se deseja corrigir o limite superior ou permitir que a matriz se expanda quando adicionar elementos além do limite atual. A memória é alocada contíguamente ao limite superior, mesmo que alguns elementos sejam NULL.
No Win32, o tamanho de um CObArray objeto é limitado apenas à memória disponível.
Como em uma matriz C, o tempo de acesso para um CObArray elemento indexado é constante e é independente do tamanho da matriz.
CObArray incorpora a macro para suportar a IMPLEMENT_SERIAL serialização e o despejo de seus elementos. Se uma matriz de ponteiros é armazenada em um arquivo, seja com o operador de CObject inserção sobrecarregado ou com a Serialize função de membro, cada CObject elemento é, por sua vez, serializado junto com seu índice de matriz.
Se você precisar de um despejo de elementos individuais CObject em uma matriz, deverá definir a CDumpContext profundidade do objeto como 1 ou superior.
Quando um CObArray objeto é excluído, ou quando seus elementos são removidos, apenas os CObject ponteiros são removidos, não os objetos aos quais eles fazem referência.
Observação
Antes de usar uma matriz, use SetSize para estabelecer seu tamanho e alocar memória para ela. Se você não usar SetSizeo , adicionar elementos à sua matriz fará com que ela seja frequentemente realocada e copiada. Realocação e cópia frequentes são ineficientes e podem fragmentar a memória.
A derivação de classe de matriz é semelhante à derivação de lista. Para obter detalhes sobre a derivação de uma classe de lista de finalidade especial, consulte o artigo Coleções.
Observação
Você deve usar a macro IMPLEMENT_SERIAL na implementação de sua classe derivada se você pretende serializar a matriz.
Hierarquia de herança
CObArray
Requerimentos
Cabeçalho:afxcoll.h
CObArray::Add
Adiciona um novo elemento ao final de uma matriz, aumentando a matriz em 1.
INT_PTR Add(CObject* newElement);
Parâmetros
newElement
O CObject ponteiro a ser adicionado a essa matriz.
Valor de retorno
O índice do elemento adicionado.
Observações
Se SetSize tiver sido usado com um nGrowBy valor maior que 1, então a memória extra pode ser alocada. No entanto, o limite superior aumentará apenas 1.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::Add.
| Classe | Função de Membro |
|---|---|
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*); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Os resultados deste programa são os seguintes:
Add example: A CObArray with 2 elements
[0] = a CAge at $442A 21
[1] = a CAge at $4468 40
CObArray::Append
Chame essa função de membro para adicionar o conteúdo de outra matriz ao final da matriz dada.
INT_PTR Append(const CObArray& src);
Parâmetros
src
Origem dos elementos a serem anexados à matriz.
Valor de retorno
O índice do primeiro elemento acrescentado.
Observações
As matrizes devem ser do mesmo tipo.
Se necessário, Append pode alocar memória extra para acomodar os elementos anexados à matriz.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::Append.
| Classe | Função de Membro |
|---|---|
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); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Chame essa função de membro para substituir os elementos da matriz dada pelos elementos de outra matriz do mesmo tipo.
void Copy(const CObArray& src);
Parâmetros
src
Origem dos elementos a serem copiados para a matriz.
Observações
Copy não liberta memória. Se necessário, Copy pode alocar memória extra para acomodar os elementos copiados para a matriz.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::Copy.
| Classe | Função de Membro |
|---|---|
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); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Constrói uma matriz de ponteiro vazia CObject .
CObArray();
Observações
A matriz cresce um elemento de cada vez.
A tabela a seguir mostra outros construtores que são semelhantes a CObArray::CObArray.
| Classe | Construtor |
|---|---|
CByteArray |
CByteArray(); |
CDWordArray |
CDWordArray(); |
CPtrArray |
CPtrArray(); |
CStringArray |
CStringArray(); |
CUIntArray |
CUIntArray(); |
CWordArray |
CWordArray(); |
Exemplo
CObArray arr; //Array with default blocksize
CObArray* pArray = new CObArray; //Array on the heap with default blocksize
CObArray::ElementAt
Retorna uma referência temporária ao ponteiro do elemento dentro da matriz.
CObject*& ElementAt(INT_PTR nIndex);
Parâmetros
nIndex
Um índice inteiro maior ou igual a 0 e menor ou igual ao valor retornado por GetUpperBound.
Valor de retorno
Uma referência a um CObject ponteiro.
Observações
Ele é usado para implementar o operador de atribuição do lado esquerdo para matrizes. Esta é uma função avançada que deve ser usada apenas para implementar operadores de matriz especiais.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::ElementAt.
| Classe | Função de Membro |
|---|---|
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); |
Exemplo
Veja o exemplo para CObArray::GetSize.
CObArray::FreeExtra
Libera qualquer memória extra que foi alocada enquanto o array foi crescido.
void FreeExtra();
Observações
Esta função não tem efeito sobre o tamanho ou limite superior da matriz.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::FreeExtra.
| Classe | Função de Membro |
|---|---|
CByteArray |
void FreeExtra(); |
CDWordArray |
void FreeExtra(); |
CPtrArray |
void FreeExtra(); |
CStringArray |
void FreeExtra(); |
CUIntArray |
void FreeExtra(); |
CWordArray |
void FreeExtra(); |
Exemplo
Veja o exemplo para CObArray::GetData.
CObArray::GetAt
Retorna o elemento array no índice especificado.
CObject* GetAt(INT_PTR nIndex) const;
Parâmetros
nIndex
Um índice inteiro maior ou igual a 0 e menor ou igual ao valor retornado por GetUpperBound.
Valor de retorno
O CObject elemento de ponteiro atualmente neste índice.
Observações
Observação
Passar um valor negativo ou um valor maior do que o valor retornado por GetUpperBound resultará em uma declaração com falha.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::GetAt.
| Classe | Função de Membro |
|---|---|
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; |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Retorna o número de elementos de matriz.
INT_PTR GetCount() const;
Valor de retorno
O número de itens na matriz.
Observações
Chame esse método para recuperar o número de elementos na matriz. Como os índices são baseados em zero, o tamanho é 1 maior do que o maior índice.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::GetCount.
| Classe | Função de Membro |
|---|---|
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; |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Use essa função de membro para obter acesso direto aos elementos na matriz.
const CObject** GetData() const;
CObject** GetData();
Valor de retorno
Um ponteiro para a matriz de CObject ponteiros.
Observações
Se nenhum elemento estiver disponível, GetData retornará um NULL valor.
Embora o acesso direto aos elementos de uma matriz possa ajudá-lo a trabalhar mais rapidamente, tenha cuidado ao ligar GetData: quaisquer erros cometidos afetam diretamente os elementos da matriz.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::GetData.
| Classe | Função de Membro |
|---|---|
| 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(); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Retorna o tamanho da matriz.
INT_PTR GetSize() const;
Observações
Como os índices são baseados em zero, o tamanho é 1 maior do que o maior índice.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::GetSize.
| Classe | Função de Membro |
|---|---|
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; |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Devolve o limite superior atual desta matriz.
INT_PTR GetUpperBound() const;
Valor de retorno
O índice do limite superior (baseado em zero).
Observações
Como os índices de matriz são baseados em zero, essa função retorna um valor 1 menor que GetSize.
A condição GetUpperBound() = -1 indica que a matriz não contém elementos.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::GetUpperBound.
| Classe | Função de Membro |
|---|---|
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; |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
CObArray arr;
arr.Add(new CAge(21)); // Element 0
arr.Add(new CAge(40)); // Element 1
ASSERT(arr.GetUpperBound() == 1); // Largest index
CObArray::InsertAt
Insere um elemento (ou todos os elementos em outra matriz) em um índice especificado.
void InsertAt(
INT_PTR nIndex,
CObject* newElement,
INT_PTR nCount = 1);
void InsertAt(
INT_PTR nStartIndex,
CObArray* pNewArray);
Parâmetros
nIndex
Um índice inteiro que pode ser maior do que o valor retornado por GetUpperBound.
newElement
O CObject ponteiro a ser colocado nesta matriz. Um newElement de valor NULL é permitido.
nCount
O número de vezes que este elemento deve ser inserido (o padrão é 1).
nStartIndex
Um índice inteiro que pode ser maior do que o valor retornado por GetUpperBound.
pNewArray
Outra matriz que contém elementos a serem adicionados a essa matriz.
Observações
A primeira versão do InsertAt insere um elemento (ou várias cópias de um elemento) em um índice especificado em uma matriz. No processo, ele desloca para cima (incrementando o índice) o elemento existente nesse índice, e desloca para cima todos os elementos acima dele.
A segunda versão insere todos os elementos de outra CObArray coleção, começando pela nStartIndex posição.
A SetAt função, por outro lado, substitui um elemento de matriz especificado e não desloca nenhum elemento.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::InsertAt.
| Classe | Função de Membro |
|---|---|
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*); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Os resultados deste programa são os seguintes:
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
Determina se a matriz está vazia.
BOOL IsEmpty() const;
Valor de retorno
Diferente de zero se a matriz estiver vazia; caso contrário, 0.
CObArray::operator [ ]
Esses operadores subscritos são um substituto conveniente para as SetAt funções e GetAt .
CObject*& operator[](int_ptr nindex);
CObject* operator[](int_ptr nindex) const;
Observações
O primeiro operador, chamado para matrizes que não constsão, pode ser usado à direita (valor r) ou à esquerda (valor l) de uma instrução de atribuição. O segundo, chamado de const matrizes, pode ser usado apenas à direita.
A versão Debug da biblioteca afirma se o subscrito (no lado esquerdo ou direito de uma instrução de atribuição) está fora dos limites.
A tabela a seguir mostra outros operadores semelhantes ao CObArray::operator [].
| Classe | Operador |
|---|---|
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; |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Remove todos os ponteiros dessa matriz, mas não exclui os CObject objetos.
void RemoveAll();
Observações
Se a matriz já estiver vazia, a função ainda funciona.
A RemoveAll função libera toda a memória usada para armazenamento de ponteiro.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::RemoveAll.
| Classe | Função de Membro |
|---|---|
CByteArray |
void RemoveAll(); |
CDWordArray |
void RemoveAll(); |
CPtrArray |
void RemoveAll(); |
CStringArray |
void RemoveAll(); |
CUIntArray |
void RemoveAll(); |
CWordArray |
void RemoveAll(); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Remove um ou mais elementos começando em um índice especificado em uma matriz.
void RemoveAt(
INT_PTR nIndex,
INT_PTR nCount = 1);
Parâmetros
nIndex
Um índice inteiro maior ou igual a 0 e menor ou igual ao valor retornado por GetUpperBound.
nCount
O número de elementos a remover.
Observações
No processo, ele desloca para baixo todos os elementos acima do(s) elemento(s) removido(s). Ele diminui o limite superior da matriz, mas não libera memória.
Se você tentar remover mais elementos do que os contidos na matriz acima do ponto de remoção, a versão de depuração da biblioteca afirma.
A RemoveAt função remove o CObject ponteiro da matriz, mas não exclui o objeto em si.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::RemoveAt.
| Classe | Função de Membro |
|---|---|
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); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Os resultados deste programa são os seguintes:
RemoveAt example: A CObArray with 1 elements
[0] = a CAge at $4606 40
CObArray::SetAt
Define o elemento array no índice especificado.
void SetAt(
INT_PTR nIndex,
CObject* newElement);
Parâmetros
nIndex
Um índice inteiro maior ou igual a 0 e menor ou igual ao valor retornado por GetUpperBound.
newElement
O ponteiro de objeto a ser inserido nesta matriz. Um NULL valor é permitido.
Observações
SetAt não fará com que a matriz cresça. Use SetAtGrow se quiser que o array cresça automaticamente.
Verifique se o valor do índice representa uma posição válida na matriz. Se estiver fora dos limites, a versão Debug da biblioteca será declarada.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::SetAt.
| Classe | Função de Membro |
|---|---|
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); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Os resultados deste programa são os seguintes:
SetAt example: A CObArray with 2 elements
[0] = a CAge at $47E0 30
[1] = a CAge at $47A0 40
CObArray::SetAtGrow
Define o elemento array no índice especificado.
void SetAtGrow(
INT_PTR nIndex,
CObject* newElement);
Parâmetros
nIndex
Um índice inteiro maior ou igual a 0.
newElement
O ponteiro de objeto a ser adicionado a essa matriz. Um NULL valor é permitido.
Observações
A matriz cresce automaticamente se necessário (ou seja, o limite superior é ajustado para acomodar o novo elemento).
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::SetAtGrow.
| Classe | Função de Membro |
|---|---|
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*); |
Exemplo
Consulte CObList::CObList para obter uma lista da CAge classe usada em todos os exemplos de coleção.
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
Os resultados deste programa são os seguintes:
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
Estabelece o tamanho de uma matriz vazia ou existente; aloca memória, se necessário.
void SetSize(
INT_PTR nNewSize,
INT_PTR nGrowBy = -1);
Parâmetros
nNewSize
O novo tamanho da matriz (número de elementos). Deve ser maior ou igual a 0.
nGrowBy
O número mínimo de slots de elementos a alocar se for necessário um aumento de tamanho.
Observações
Se o novo tamanho for menor do que o tamanho antigo, a matriz será truncada e toda a memória não utilizada será liberada. Para maior eficiência, chame SetSize para definir o tamanho do array antes de usá-lo. Isso evita a necessidade de realocar e copiar a matriz cada vez que um item é adicionado.
O nGrowBy parâmetro afeta a alocação de memória interna enquanto a matriz está crescendo. Seu uso nunca afeta o tamanho da matriz, conforme relatado por GetSize e GetUpperBound.
Se o tamanho da matriz tiver aumentado, todos os ponteiros recém-alocados CObject * serão definidos como NULL.
A tabela a seguir mostra outras funções de membro semelhantes ao CObArray::SetSize.
| Classe | Função de Membro |
|---|---|
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*); |
Exemplo
Veja o exemplo para CObArray::GetData.
Ver também
CObject Classe
Gráfico de Hierarquia
CStringArray Classe
CPtrArray Classe
CByteArray Classe
CWordArray Classe
CDWordArray Classe