Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Alocare Dinamica  (Citit de 6742 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
pocaitu
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 141



Vezi Profilul
« : Martie 27, 2007, 13:33:49 »

        Am cautat si pe net si prin toate cartile care le am , dar n-am gasit nicaieri un articol care sa explice clar cum sa aloc dinamic memorie in C++. Poate explica cineva , cam cum as putea aloca dinamic o matrice (m[ i ][j]) in care ma intereseaza doar anumite pozitii din fiecare m[ i ]  ?Sau sa posteze un link .?
 Spre ex vreau sa folosesc
la m[1] 3 elemente {1,2,3} m[1][0]=1,m[1][2]=2,m[1][3]=3
la m[2] 1 elemnt {1} m[2][0]=1
la m[3] 2 elemente {4,5} m[3][0]=4,m[3][1]=5
Memorat

This is not a signature ! I repeat, this is not a signature !
peanutz
Nu mai tace
*****

Karma: 10
Deconectat Deconectat

Mesaje: 296



Vezi Profilul
« Răspunde #1 : Martie 27, 2007, 13:38:48 »

Daca vrei cu realloc iti pot zice eu, mie asa mi se pare mai usor, in c++ nu-mi prea place.. probabil vrei sa faci o lista de adiacenta.

ideea e urmatoarea, declari un vector de pointeri ex: int *a[NMAX];

apoi aloci gradul pentru fiecare linie(numarul de elemente):

Cod:
a[i] = (int *) realloc(a[i], sizeof(int)); a[i][0] = 0;

si ca sa mai faci o sa casuta(faci o redimensionare):

Cod:
a[i] = (int *) realloc(a[i], sizeof(int)*(++a[i][0]+1)); a[i][a[i][0]] = y

ideea ar trebui sa fie asemanatoare si in c++, cauta echivalentul comenzilor cu help...

Daca nu te-a ajutat pe tine, sper ca ii va ajuta pe altii.
« Ultima modificare: Martie 27, 2007, 15:01:35 de către Andrei Homorodean » Memorat

....staind....
alecman
Strain
*

Karma: 20
Deconectat Deconectat

Mesaje: 42



Vezi Profilul
« Răspunde #2 : Martie 27, 2007, 13:51:00 »

Pai...din cate stiu, poti in felul urmator:
1. definesti matricea ca int *matr[MAX]
2. aloci fiecare matr[ i ] cu dimensiunea pe care o vrei
   matr[ i ]=new int[Dim];
unde Dim e dimensiunea pe care vrei s-o aloci randului respectiv.
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #3 : Martie 27, 2007, 13:53:25 »

Cod:
struct lista{long int val;
                lista *urm;} *vf[NMAX];

vf[ i ] - varful listei i. p->urm - pointer catre urmatorul element din lista.
Cel putin eu asa fac lista de adiacenta.De asemenea poti sa faci cu <vector> din STL.
Memorat
peanutz
Nu mai tace
*****

Karma: 10
Deconectat Deconectat

Mesaje: 296



Vezi Profilul
« Răspunde #4 : Martie 27, 2007, 13:55:33 »

parca tot mai putin suspect suna in c Tongue
Memorat

....staind....
pocaitu
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 141



Vezi Profilul
« Răspunde #5 : Martie 27, 2007, 13:57:39 »

  Da, am facut cum a zis Andrei si vad ca merge f bine . Ms fain
Memorat

This is not a signature ! I repeat, this is not a signature !
astronomy
Nu mai tace
*****

Karma: 204
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #6 : Martie 27, 2007, 15:04:22 »

Aici http://infoarena.ro/Multe-smenuri-de-programare-in-CC-si-nu-numai scrie ceva despre alocarea dinamica a unui graf. Pointerii merg prea incet, iar sa apelezi de fiecare data realloc e iarasi cam incet.
Memorat
peanutz
Nu mai tace
*****

Karma: 10
Deconectat Deconectat

Mesaje: 296



Vezi Profilul
« Răspunde #7 : Martie 27, 2007, 17:33:02 »

Stiu ca nu e locul, dar am o mica intrebare, ca sa nu mai deschid topic nou pentru o nimica toata... Daca am implementat un quicksort si la functia de divide acolo la pozitionarea elementului in pozitia sa corecta in sir la while-urile alea... in loc de conditie am pus o functie inline, ca sa nu fie mult scris acolo, are ceva?(am emotii la chestiile astea) Si in general daca apelezi o functie inline de multe ori se poate intampla ceva? Are vreo slabiciune inline?
Memorat

....staind....
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #8 : Martie 27, 2007, 17:46:28 »

http://www.cppreference.com/keywords/inline.html Wink

Desi eu am pus inline si la functii cu while si alea-alea si nu mi-a zis nimic... si in general si cu inline, si fara... tot aia e... daca ai -O2 face automat inline la tot ce poate... Cel putin eu asa stiu
Memorat
peanutz
Nu mai tace
*****

Karma: 10
Deconectat Deconectat

Mesaje: 296



Vezi Profilul
« Răspunde #9 : Martie 27, 2007, 17:53:44 »

Aha, merci... Putinul pe care-l fac vreau sa reziste si nu sa crape Tongue, de-asta am emotii ...

Later edit: nu era vorba de zis ceva, pentru ca stiu ca nu zice, intrebarea mea era ca daca se poate intampla ceva dupa un nr incredibil de mare de apelari...
« Ultima modificare: Martie 27, 2007, 18:04:17 de către Andrei Homorodean » Memorat

....staind....
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #10 : Martie 27, 2007, 20:17:42 »

Pai ce sa se intample... inline daca ai noroc (a se citi, daca poate) iti copiaza corpul functiei intr-un anumit fel in sursa... daca nu aia e, nu face nimic...

Sau asa inteleg eu (foarte simplificat) ca face...  Whistle
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines