abcd423417984 Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 Hei Jeg har lenge sittet med følgende spørsmål; hvordan får jeg opprettet en todimensjonal array under runtime i C++ (eller gjerne/helst C)? int var[][] funker jo fint hvis man vet størrelsen på forhånd, men for mitt bruk trenger jeg å kunne sette av minne på forhånd. Dynamisk minneallokering og frigjøring er definitivt vrient da det såvidt jeg vet ikke eksisterer noen new[][] og delete [][] operator? Lenke til kommentar
Peter Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 (endret) int** arr = new int* [50]; for(int i=0;i<50;i++) { arr[i] = new int[100]; } burde funke Endret 10. februar 2006 av Nazgul Lenke til kommentar
abcd423417984 Skrevet 10. februar 2006 Forfatter Del Skrevet 10. februar 2006 du har ikke tilfeldigvis også peiling på hvordan man overloader [][] i en klasse? Lenke til kommentar
A_N_K Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 du har ikke tilfeldigvis også peiling på hvordan man overloader [][] i en klasse? 5583941[/snapback] Det går nok dørlig. Det er jo objektet som returneres av operator [] som [] nummer to opererer på. For å oppnå todimensjonal aksessering i C++ pleier man å ty til operator () i stedet, er jeg redd. Lenke til kommentar
mikaelandre Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 Hei Jeg har lenge sittet med følgende spørsmål; hvordan får jeg opprettet en todimensjonal array under runtime i C++ (eller gjerne/helst C)? int var[][] funker jo fint hvis man vet størrelsen på forhånd, men for mitt bruk trenger jeg å kunne sette av minne på forhånd. Dynamisk minneallokering og frigjøring er definitivt vrient da det såvidt jeg vet ikke eksisterer noen new[][] og delete [][] operator? 5583143[/snapback] Jeg kan ikke C++, men her er standard C måte å gjøre dette på: int* array[x][y]; int x; int y; // Gi verdier til x og y på en eller annen måte array = (int *)malloc(sizeof(int)*x*y); // For å skrive ut alle elementer vha for løkker gjør du slik: for(i= 0; i < x; i++){ for(j = 0; j < y; j++){ printf("%d", array[i*y + j]); } } Det du gjør på linjen med malloc er å allokere plass i minnet tilsvarende x*y* størrelsen på en int. Kan også gjøre dette slik at arrayet kan aksesseres slik: array[x][y], men dette er ikke vanlig i C. Det gjøres slik: array = (int **)malloc(sizeof(int)*x); for(i = 0; i < x;i++){ array[i] = (int *)malloc(sizeof(int)*y); } Det du gjør her er å opprette en dobbeltpeker, eller en peker til ei liste med pekere... da kan du aksessere arrayet som array[x][y] 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å