Forum » Programiranje » [C++] dinamično 2d polje
[C++] dinamično 2d polje
bozjak ::
naredi dinamičen seznam, pri katerem je vsak element začetek novega dinamičnega seznama ...
če pa res misliš nekaj takega kot je predlagal moowy123, torej da dinamično pomeni zgolj to, da lahko nekje v programu določiš kako velika bo ta 2d tabela, potem pa uporabi new v kombinaciji z nečim takim:
LP Bozjak
če pa res misliš nekaj takega kot je predlagal moowy123, torej da dinamično pomeni zgolj to, da lahko nekje v programu določiš kako velika bo ta 2d tabela, potem pa uporabi new v kombinaciji z nečim takim:
int dolzina = 50; int ** a = new int * [dolzina]; for (int i = 0; i < dolzina; i++) { a[i] = new int [dolzina]; }
LP Bozjak
http://upor.blogec.si
http://bozjak.deviantart.com
http://bozjak.deviantart.com
Iluvatar ::
Iz http://www.fredosaurus.com/notes-cpp/ne...
int* a = NULL; // Pointer to int, initialize to nothing.
int n; // Size needed for array
cin >> n; // Read in the size
a = new int[n]; // Allocate n ints and save ptr in a.
. . . // Use a as a normal array
delete [] a; // When done, free memory pointed to by a.
a = NULL; // Clear a to prevent using invalid memory reference.
int* a = NULL; // Pointer to int, initialize to nothing.
int n; // Size needed for array
cin >> n; // Read in the size
a = new int[n]; // Allocate n ints and save ptr in a.
. . . // Use a as a normal array
delete [] a; // When done, free memory pointed to by a.
a = NULL; // Clear a to prevent using invalid memory reference.
Compufreek ::
naredi dinamičen seznam, pri katerem je vsak element začetek novega dinamičnega seznama ...
če pa res misliš nekaj takega kot je predlagal moowy123, torej da dinamično pomeni zgolj to, da lahko nekje v programu določiš kako velika bo ta 2d tabela, potem pa uporabi new v kombinaciji z nečim takim:
int dolzina = 50; int ** a = new int * [dolzina]; for (int i = 0; i < dolzina; i++) { a[i] = new int [dolzina]; }
LP Bozjak
a to je potem tak da se naredi eno polje in nato v vsako polje tega polja shraniš novo polje ? če prav zastopim ?
Compufreek ::
@Pimoz ... kaj je nedinamičnega v moji deklaraciji tabele ??
dinamično pomeni da lahko premeniš velikost polja med izvajanjem programa za akr pa potrebuješ kazalec ti pa velikost določiš prej da se program izvede.
moowy123 ::
@Pimoz ... kaj je nedinamičnega v moji deklaraciji tabele ??
dinamično pomeni da lahko premeniš velikost polja med izvajanjem programa za akr pa potrebuješ kazalec ti pa velikost določiš prej da se program izvede.
To je pa bolj ohlapna definicija dinamičnosti... Tukaj bi se lahko še razgovorili... Dinamično pomeni lahko tudi da imaš več instanc objekta v pomnilniku in ne samo ene statične... Iz tega vidika je moja rešitev lepo dinamična ( uporaba v classih in instancah razredov ).
Tutankhamun ::
moowy123, pač si falu. Priznaj napako pa bo .
Dinamično polje pač pomeni, da se lahko spreminja v runtime, ti si pa naredu polje v compile time.
Dinamično polje pač pomeni, da se lahko spreminja v runtime, ti si pa naredu polje v compile time.
AMD Phenom QUAD 9950 Black Edition, 8GB
bozjak ::
...
a to je potem tak da se naredi eno polje in nato v vsako polje tega polja shraniš novo polje ? če prav zastopim ?
To naredi tabelo kazalcev dolzine "dolzina", nato pa za vsak kazalec naredimo se tabelo "dolzina" int-ov... Nato se uporablja tako kot navadno tabelo, npr a[13][27] = 5; (pod pogojem, seveda, da je dolzina vec od 27).
Seveda je potrebno tudi "popucati" za sabo, kot je ze nekdo omenil. Lp
http://upor.blogec.si
http://bozjak.deviantart.com
http://bozjak.deviantart.com
redo ::
V Numerical Recipes za C++ uporabljajo nekaj takega
Prednost pri tem je, da je matrika na enem mestu v spominu.
int m=4, n=5; int **mat = new int * [m]; mat[0] = new int[m*n]; for(int i = 1; i<m; i++) mat[i] = mat[i-1] + n; ... delete[] mat[0]; delete[] mat;
Prednost pri tem je, da je matrika na enem mestu v spominu.
Keki ::
Mogoče najdeš kaj tukaj:
Klik
načeloma pa naj bi blo int (*polje)[velikost] = new int[velikost][velikost];
Klik
načeloma pa naj bi blo int (*polje)[velikost] = new int[velikost][velikost];
http://www.alfakan.si/
http://mihajerot.si/
http://mihajerot.si/
Zgodovina sprememb…
- spremenilo: Keki ()
Compufreek ::
bozjak-ova rešitev zelo lepo deluje edino kar mi ne uspe ugotoviti kako to pošlješ v funkcijo .....za 2d polje rabiš podatek o velikosti polja ....
bozjak ::
vsekakor deluje tudi rešitev, ki jo je podal redo (ubistvu ista stvar, le nekoliko težja za razumeti, dokler ni izpiljeno znanje pointerjev).
V funkcijo pošlji kar pointer (oz "dvojni pointer" ali "pointer na pinter"), ki si ga definiral, npr nekaj takega:
LP
V funkcijo pošlji kar pointer (oz "dvojni pointer" ali "pointer na pinter"), ki si ga definiral, npr nekaj takega:
void izracunaj (int ** stevilo) { stevilo[0][1] = 33; printf("%d", stevilo[0][1]); } int main(int argc, char *argv[]) { int dolzina = 50; int ** a = new int * [dolzina]; for (int i = 0; i < dolzina; i++) { a[i] = new int [dolzina]; } izracunaj(a); getch(); }
LP
http://upor.blogec.si
http://bozjak.deviantart.com
http://bozjak.deviantart.com
Zgodovina sprememb…
- spremenil: bozjak ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C++] Ali je mogoče?Oddelek: Programiranje | 1653 (1129) | Ciklamen |
» | [Vsi jeziki / C++] preprost logičen problemOddelek: Programiranje | 1141 (1048) | win64 |
» | c# težava delo z niziOddelek: Programiranje | 1535 (1386) | Tutankhamun |
» | [C++ naloga] seznamOddelek: Programiranje | 1396 (1396) | BigWhale |
» | kazalci, funkcije ipd...Oddelek: Programiranje | 1318 (1249) | OwcA |