Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come rimuovere un indice in un array dinamico di interi con C + +

matrici allocate dinamicamente, sono un mezzo spazio - efficienti di stoccaggio quantità variabili di dati in C + + . Essi sono organizzati in modo efficiente e offrono vantaggi in termini di velocità e in generale occupazione di memoria consumata dalla struttura dei dati . Il processo di eliminazione di un indice di un array dinamico è molto semplice , ma una delle cadute di matrici dinamiche è che la velocità degli algoritmi utilizzati per aggiungere o rimuovere elementi dell'array è lento rispetto ad altri metodi di archiviazione dati (quali liste collegate , nelle quali l'aggiunta e l'eliminazione dalla matrice può essere fatto in tempo costante ) . L'algoritmo di base per la rimozione di un indice di un array dinamico viene eseguito in tempo lineare ed è abbastanza facile da capire . Cose che ti serviranno
Text Editor
Compiler
Mostra più istruzioni
1

determinare la dimensione finale del vostro dell'array modificato . Rimozione di un unico indice si riduce la dimensione della matrice risultante da 1 :

int newSize currentArraySize = - 1 ;
2

creare un nuovo array dinamico che può contenere tutti gli altri numeri interi in la vecchia matrice. Utilizzare la nuova dimensione per fare questo :

int * newArray = new int [ newSize ] ;
3

Creare contatori per indici in entrambi i vecchi e nuovi array . Questi saranno incrementati separatamente come si copia il contenuto della vecchia serie nella nuova :

oldArrayIndex int = 0;

newArrayIndex int = 0;
4

Traverse entrambi gli array :

per ( oldArrayIndex = 0; oldArrayIndex < currentArraySize ; + + oldArrayIndex ) per

{

//codice da copiare va qui

}
5 Copiare i dati

dal vecchio array al nuovo , incrementando contatore del nuovo array con bancone della vecchia serie fino a raggiungere l'indice da eliminare. Quando si raggiunge l'indice di cancellare , non copiare i dati e non incrementare il contatore nuovo array. Usando il ciclo for dall'alto :

per ( oldArrayIndex = 0; oldArrayIndex < currentArraySize ; + + oldArrayIndex ) per

{

se ( oldArrayIndex = indexToDelete ! )

{

newArray [ newArrayIndex ] = oldArray [ oldArrayIndex ] ;

+ + newArrayIndex ;

}

}


 

Programmazione © www.354353.com