Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dinamicki nizovi i klase

[es] :: C/C++ programiranje :: Dinamicki nizovi i klase

[ Pregleda: 3554 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Sale_123
C++ Developer
Wien

Član broj: 23293
Poruke: 219
*.cust.tele2.at.



+120 Profil

icon Dinamicki nizovi i klase03.04.2008. u 23:03 - pre 195 meseci
Recimo da imamo nekakvu klasu foo.

Mene interesuje kako mogu kreirati dinamicki niz, ali bez incijalizacije klase.

Dakle, normalno bi islo ovako:

foo* myarray = new foo[arraysize];
....
...
...
delete [] myarray

ali prilikom ovakvog kreiranja, vec inicijalizuje svaka klasa iz dinamickog niza. (valjda bi trebalo biti tako)
Ono sto ja zelim, jeste da kreiram niz, ali tako da polje niza ne pokazuje na odredjenu lokaciju, nego da je prazno.
Onda bi u naradnim linijama koda, svakom polju niza bila dodjeljena vrijednost, tj. klassa.

Evo kako to igleda u mojoj glavi:

foo* myarray = inicijalizacija niza, n duzine
for (int i=0;i<n;i++)
myarray = new foo();

.....

....
...
brisanje niza
...
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.dynamic.sbb.rs.



+9 Profil

icon Re: Dinamicki nizovi i klase03.04.2008. u 23:40 - pre 195 meseci
Ništa, onda prosto deklariši niz proizvoljnog broja pokazivača na Foo.

Dakle, ovako nešto:

Code:

foo **niz = new foo*[100];

for(int i=0; i<100; i++)
{
  niz[i] = new foo(...);
}

// A kada zavrsis... onda oslobodi sve...
for(int i=0; i<100; i++)
{
  delete niz[i];
}
delete[] niz;

 
Odgovor na temu

Drolja
Aleksandar Kordic
Beograd, Mirijevo

Član broj: 87897
Poruke: 17
*.beogrid.net.



Profil

icon Re: Dinamicki nizovi i klase14.04.2008. u 13:03 - pre 195 meseci
Zdravo Sale,

Probaj da koristis STL. Treba da izbegnes situacije u kojima je atribut : tip **** ime_atributa. To se tesko analizira.
Pravilno resenje za dinamicki niz je
Code:
std::vector<tip_elementa>

Za dinamicki niz bez incijalizacije klase
Code:
std::vector<tip_elementa*>
.

evo ti primer :

Code:


#include <vector>
class foo;

void main(void)
{
    std::vector<foo*> niz;

    for(int i=0; i<100; i++)
    {
        //
        // napravis element, dodas u niz :
        //
        foo * element = new foo(parametar1, parametar2);
        niz.push_back(element);
    }

    //
    // ovako izgleda obrada svih elemenata u nizu
    //
    for(unsigned int i=0; i<niz.size(); i++)
    {
        foo * element = niz[i];
        //
        // neka operacija nad elementom
        //
        element->DoSomething();
    }

    //
    // ovako oslobadjas memoriju
    //
    for(unsigned int i=0; i<niz.size(); i++)
    {
        delete niz[i];
    }
    niz.clear();
}



poz
 
Odgovor na temu

Sale_123
C++ Developer
Wien

Član broj: 23293
Poruke: 219
*.cust.tele2.at.



+120 Profil

icon Re: Dinamicki nizovi i klase14.04.2008. u 13:19 - pre 195 meseci
Hvala na odgovoru. Znam za klasu vector i stl, medjutim problem je u tome, sto je to projekat iz Algoritama i struktura podata, i profesor je izricito zabranio koristenje stl-a. Radi se o implementaciji algoritma Extendible hashing, tako da za snimanje indeksa moramo sami da koristimo sopstvene strukture i da sami vrsimo dinamicku alokaciju nizova, umjesto da to prepustimo stl-u. U svakom drugom slucaju, zna se -> STL.


Ali svejedno, hvala svima na odgovorima.
...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Dinamicki nizovi i klase

[ Pregleda: 3554 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.