Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Taulukon koko

kayttaja-3842 [30.04.2007 17:12:24]

#

Joo eli pitäs tehdä taulukko, mutta en onnistu tekemään sitä toise muuttujan kautta..

Eli meinaan alla oleva esimerkki ei toimi ainakaan minulla.

int koko = 300;

T_KARTTA t_map[koko];

Valittaa: variable-size type declared outside of any function

Miten tuo tulisi toteuttaa "oikealla" tavalla, tai enneminkin toimivalla?

Mazzimo [30.04.2007 17:20:25]

#

Taulukon koko tulee olla määritetty vakiolla. Ts.

T_KARTTA t_map[300];

Jos haluat määrittää koon ajonaikana, tulee käyttää dynaamista muistia:

int koko = 300;
T_KARTTA* t_map = new T_KARTTA[koko];

// käyttö
t_map[23] = 242;

// MUISTA MUISTIN VAPAUTUS
delete [] t_map; t_map = 0;

kayttaja-3842 [30.04.2007 17:32:41]

#

oo, kiitoksia. :P

Metabolix [30.04.2007 18:32:27]

#

Vielä hieman vähemmän virheitä mahdollistava tapa ovat vektorit eli C++:n dynaamiset taulukot. Niitä ei tarvitse erikseen vapauttaa, ne vapautuvat itsekseen aivan samaan tapaan kuin tavalliset staattisetkin taulukot.

#include <vector>
using std::vector; // Vektori on std-nimiavaruudessa

vector<T_KARTTA> t_map; // Vektorillinen T_KARTTA-tyyppisiä
t_map.resize(koko); // Koon muuttaminen (voi siis muuttaa milloin vain).
t_map[0] = ...; // Voi käyttää ihan normaalin taulukon tapaan

t_map.clear(); // Sama kuin koon asettaminen nollaksi...

Kannattaa kääntää ohjelma -O-lipulla (tai laittaa projektin tai kääntäjän asetuksista perusoptimointi päälle), jotta kääntäjä ei tahallaan tee noista aivan hirvittävän hidasta koodia. Optimoinnin kanssa nopeus ei juuri poikkea tavallisesta taulukosta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta