Gå til innhold

Kappe av siste ledd i array


Anbefalte innlegg

Jeg trenger en kodesnutt for å kappe av det siste leddet i en array. Siden dette høres litt kronglete ut, skal jeg forklare det i kode under:

 

Jeg har en array (Alle()).

Den skal bli ett "hakk" kortere, som vist under.

Alle(0)
Alle(1)
Alle(2)
Alle(3)
[...]
Alle(99 998)
Alle(99 999)

Skal bli

Alle(0)
Alle(1)
Alle(2)
Alle(3)
[...]
Alle(99 997)
Alle(99 998)

 

Nå gjør jeg dette på følgende måte:

           ReDim Alle2(UBound(Alle) - 1)
           ' Gjør Alle2() klar til å lagre Alle()s innhold

           For i = 0 To UBound(Alle2)
               Alle2(i) = Alle(i) ' Alle2(i) får Alle(i) sitt innhold
           Next i

           ReDim Alle(UBound(Alle2)) 
           'Alle blir redimmet, så den er ett hakk kortere enn før

           For i = 0 To UBound(Alle2)
               Alle(i) = Alle2(i) 
               'Siden innholdet i en array forsvinner ved redimming, 
               'må Alle(i) få tilbake sin verdi fra Alle2(i)
           Next i

 

Men dette viser seg utilstrekkelig når det gjelder ytelse.

 

Så derfor trenger jeg en raskere måte å fjerne det siste leddet i en array. Kan noen hjelpe meg med dette?

 

Takk,

Degeim

Endret av Degeim
Lenke til kommentar
Videoannonse
Annonse

En Array har alltid statisk lengde, og om du ønsker å endre lengden på denne må du opprette en ny Array og kopiere dataene over dt. Ja, det tar sin tid...

 

Så i utgangspunktet bruker du feil datastruktur til det du ønsker å oppnå, med tanke på ytelse. En eller annen for for lenket liste vil gjøre jobben.

Lenke til kommentar

Man kan bruke array, men da konvertere til en ArrayList for bedre ytelse:

(min kode er i C#, men det bør være greit å oversette)

 

int[] alle = new int[99999];
for (int i = 0; i < alle.Length; i++)
{
  alle[i] = i;
}
ArrayList arrayList = new ArrayList(alle);
arrayList.RemoveAt(arrayList.Count - 1);
alle = (int[])(arrayList.ToArray(typeof(int)));

 

Håper dette kan hjelpe.

 

Øyvind.

Lenke til kommentar
Takk, jeg skal se på det. Hva er forresten forskjellen på en array og en arraylist?

5600084[/snapback]

 

Et array blir definert når programmet kompileres. Dette gjør at det ikke kan skifte størrelse under runtime.

 

ArrayList er dynamisk og kan endre størrelse under runtime

Endret av Bramnar
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...