dynamisk tildelte arrays er en plassbesparende måte å lagre variable mengder data i C + + . De er effektivt organisert og tilbyr fordeler i både fart og generell minne fotavtrykk fortært av datastruktur . Prosessen med å slette en indeks fra en dynamisk matrise er ganske grei, men en av de downfalls av dynamiske matriser er at hastigheten på de algoritmene som brukes til å legge til eller fjerne elementer fra matrisen er treg i forhold til andre data - lagring metoder (for eksempel koblede lister , der legge til og slette fra matrisen kan gjøres i konstant tid ) . Den mest grunnleggende algoritme for å fjerne en indeks fra en dynamisk matrise kjører i lineær tid og er ganske lett å forstå. Du trenger
tekst editor
Compiler
Vis flere instruksjoner
en
bestemme den endelige størrelsen på modifisert array. Fjerne en enkelt indeks vil redusere den resulterende gitterstørrelse etter en : en
int newSize = currentArraySize - 1;
2
Opprett en ny dynamisk array som kan holde alle de gjenværende heltall i den gamle array. Bruk den nye størrelsen å gjøre dette : en
int * newArray = new int [ newSize ];
3
Lag tellere for indekser i både nye og gamle arrays. Disse vil økes separat som du kopiere innholdet i den gamle matrisen i det nye : en
int oldArrayIndex = 0;
int newArrayIndex = 0;
4
traversere begge matriser : en
for ( oldArrayIndex = 0; oldArrayIndex < currentArraySize ; + + oldArrayIndex )
{
//kode for å kopiere her går
< p > }
5
kopiere data fra den gamle matrise til den nye , og øker den nye matrisen telleren med den gamle array teller til du kommer indeksen for å slette. Når du kommer til indeksen for å slette , ikke kopiere data , og ikke øke det nye utvalget teller. Bruke for loop ovenfra : en
for ( oldArrayIndex = 0; oldArrayIndex < currentArraySize ; + + oldArrayIndex )
{
if ( oldArrayIndex = indexToDelete ! )
{
newArray [ newArrayIndex ] = oldArray [ oldArrayIndex ];
+ + newArrayIndex ;
}
}