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

realociranje memorije (moze li drugacije?)

[es] :: C/C++ programiranje :: realociranje memorije (moze li drugacije?)

[ Pregleda: 2553 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ramirez

Član broj: 13160
Poruke: 318
*.mobtel.co.yu



Profil

icon realociranje memorije (moze li drugacije?)28.04.2004. u 13:15 - pre 243 meseci
dakle ovo je klasa "skup" i metoda koja proverava da li se neka cifra nalazi u skupu i metoda koja dodaje neku cifru u skup (pod uslovom da se ona vec ne nalazi u njemu)... zanemarite nedostatak konstruktora destruktora i svega ostalog.....

Code:

//header.h
class Skup {
  int *niz, duz;
public:
  bool operator% (int b) const;
  Skup& operator+= (int b);
};

//methods.cpp
bool Skup::operator% (int b) const {
  for (int i=0; i<duz; i++)
    if (niz[i] == b) return true;
  return false;
}

Skup& Skup::operator+= (int b) {
  if (! (*this % b)) {
    int *n = new int [duz+1];
    for (int i=0; i<duz; i++) n[i] = niz[i];
    n[duz++] = b;
    delete [] niz;
    niz = n;
  }
  return *this;
}


mene zanima sledece:
1. zasto postoji ono const u definiciji operatora % ???
2. zar ne postoji bolji nacin za realociranje memorije.... jer sve sto treba da se uradi je da se alocira jos jedno mesto na kraju niza a da se vrednosti sacuvaju. Prosto mi je neverovatno da ne to ne moze da se uradi na laksi nacin???
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: realociranje memorije (moze li drugacije?)28.04.2004. u 16:04 - pre 243 meseci
1) const je naznaka kompajleru da je funkcija "accessor", tj da može da čita promenljive članice klase, ali ne i da ih menja.

2) Ne samo da može, nego i treba:

Code:

//header.h
class Skup {
  std::vector<int> niz;
public:
  bool operator% (int b) const;
  Skup& operator+= (int b);
};

//methods.cpp
bool Skup::operator% (int b) const {
  for (int i=0; i<niz.size(); i++)
    if (niz[i] == b) return true;
  return false;
}

Skup& Skup::operator+= (int b) {
  if (! (*this % b)) {
  niz.push_back(b);
  }
  return *this;
}


 
Odgovor na temu

[es] :: C/C++ programiranje :: realociranje memorije (moze li drugacije?)

[ Pregleda: 2553 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

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