infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: David si Goliat din Martie 27, 2007, 13:33:49



Titlul: Alocare Dinamica
Scris de: David si Goliat din 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


Titlul: Răspuns: Alocare Dinamica
Scris de: Andrei Homorodean din 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.


Titlul: Răspuns: Alocare Dinamica
Scris de: Achim Ioan Alexandru din 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.


Titlul: Răspuns: Alocare Dinamica
Scris de: Savin Tiberiu din 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.


Titlul: Răspuns: Alocare Dinamica
Scris de: Andrei Homorodean din Martie 27, 2007, 13:55:33
parca tot mai putin suspect suna in c :P


Titlul: Răspuns: Alocare Dinamica
Scris de: David si Goliat din Martie 27, 2007, 13:57:39
  Da, am facut cum a zis Andrei si vad ca merge f bine . Ms fain


Titlul: Răspuns: Alocare Dinamica
Scris de: Airinei Adrian din 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.


Titlul: Răspuns: Alocare Dinamica
Scris de: Andrei Homorodean din 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?


Titlul: Răspuns: Alocare Dinamica
Scris de: Sima Cotizo din Martie 27, 2007, 17:46:28
http://www.cppreference.com/keywords/inline.html ;)

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


Titlul: Răspuns: Alocare Dinamica
Scris de: Andrei Homorodean din Martie 27, 2007, 17:53:44
Aha, merci... Putinul pe care-l fac vreau sa reziste si nu sa crape :P, 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...


Titlul: Răspuns: Alocare Dinamica
Scris de: Sima Cotizo din 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...  :-'