matrizes dinamicamente alocados são um meio eficiente de espaço de armazenamento de quantidades variáveis de dados em C + +. Eles são eficientemente organizada e oferecer benefícios em termos de velocidade e consumo de memória total consumida pela estrutura de dados. O processo de exclusão de um índice a partir de uma matriz dinâmica é bastante simples, mas uma das quedas de matrizes dinâmicas é que a velocidade dos algoritmos usados para adicionar ou remover elementos da matriz é lento em comparação com outros métodos de armazenamento de dados (tais como listas ligadas , em que adicionar e excluir da matriz pode ser feito em tempo constante ) . O algoritmo mais básico para a remoção de um índice a partir de uma matriz dinâmica é executado em tempo linear e é bastante fácil de entender. Coisas que você precisa
editor de texto
Compiler
Show Mais instruções
1
Determine o tamanho final da sua matriz modificada. A remoção de um único índice irá reduzir o tamanho da matriz resultante por 1:
int newSize = currentArraySize - 1;
2
Crie uma nova matriz dinâmica que pode conter todos os inteiros restantes em matriz antiga . Use o novo tamanho para fazer isso:
int * newArray = new int [ newSize ];
3
Criar contadores para os índices em ambos os conjuntos novos e antigos . Estes serão incrementados separadamente, como você copiar o conteúdo do array antigo para o novo :
int oldArrayIndex = 0;
int newArrayIndex = 0;
4
Traverse as duas matrizes :
para ( oldArrayIndex = 0; oldArrayIndex < currentArraySize ; + + oldArrayIndex )
{
//código para copiar vai aqui
}
5
copiar dados do array antigo para o novo , incrementando contador do novo array com balcão da velha matriz até chegar ao índice a ser excluído. Quando você alcança o índice de apagar , não copie os dados e não incrementar o novo contador matriz. Usando o laço for de cima:
para ( oldArrayIndex = 0; oldArrayIndex < currentArraySize ; + + oldArrayIndex )
{
if (! OldArrayIndex = indexToDelete ) < br >
{
newArray [ newArrayIndex ] = oldArray [ oldArrayIndex ];
+ + newArrayIndex ;
}
}
< br >