Degeim Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 (endret) 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 10. februar 2006 av Degeim Lenke til kommentar
Beisfjord Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 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
oyvind_b Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 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
Degeim Skrevet 13. februar 2006 Forfatter Del Skrevet 13. februar 2006 Takk, jeg skal se på det. Hva er forresten forskjellen på en array og en arraylist? Lenke til kommentar
Bramnar Skrevet 13. februar 2006 Del Skrevet 13. februar 2006 (endret) 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 13. februar 2006 av Bramnar Lenke til kommentar
wolf5 Skrevet 15. februar 2006 Del Skrevet 15. februar 2006 Har du .Net 2005 bruker du List<int> arrayList = new List<int>(alle); arrayList.RemoveAt(arrayList.Count - 1); alle = arrayList.ToArray(); Så slipper du casting, + ser penere ut :-) Lenke til kommentar
oyvind_b Skrevet 15. februar 2006 Del Skrevet 15. februar 2006 Har du .Net 2005 bruker duList<int> arrayList = new List<int>(alle); arrayList.RemoveAt(arrayList.Count - 1); alle = arrayList.ToArray(); Så slipper du casting, + ser penere ut :-) 5607349[/snapback] Ah, nydelig, tenkte ikke på 2005 Øyvind. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå