Avatar billede venja Nybegynder
06. maj 2003 - 18:46 Der er 8 kommentarer og
1 løsning

lave et array uden fast størrelse

Kan man i C++ lave et array der "vokser" efterhånden som man putter data ind i det ???
Avatar billede gumbert Nybegynder
06. maj 2003 - 18:47 #1
char array[];
Avatar billede soreno Praktikant
06. maj 2003 - 18:48 #2
Nej.

Men du kan lave en klasse der wrapper et array og som udvider det hvis det er nødvendigt.

F.eks. stl vector er en implementering af konceptet.
Avatar billede soreno Praktikant
06. maj 2003 - 18:52 #3
F.eks.

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char **argv)
{
    vector<int> vect;
    vector<int>::iterator iter;
   
    for(int i=0;i<5;i++)
    {
        vect.push_back(i);
    }

    for(iter=vect.begin();iter!=vect.end();iter++)
    {
        cout << *iter << endl;
    }
     
    return 0;
}

Så kan du blive ved med at proppe int i vectoren som de behager dig.
Avatar billede gumbert Nybegynder
06. maj 2003 - 18:53 #4
Tænkte mig ikke lige om :)
D sker ofter
Avatar billede venja Nybegynder
06. maj 2003 - 19:46 #5
jeg får 102 errors og 1 warning ! - burde koden ikke være lige til at bruge ?
Avatar billede soreno Praktikant
06. maj 2003 - 19:48 #6
Jow - det virker hos mig.
Hvilken compiler bruger du ?
Hvilket OS bruger du ?

Post lige de første 5-10 linier med fejl.
Avatar billede venja Nybegynder
06. maj 2003 - 19:55 #7
jeg bruger win XP og VC++

jeg havde ikke included bibliotekerne globalt :-)

har du mulighed for at give en lille forklaring til hvordan det virker, jeg kan ikke umidelbart se hvad der sker og hvordan....
Avatar billede soreno Praktikant
06. maj 2003 - 20:44 #8
vector laver et array af <int> (vector er en template klasse og virker derfor med alt hvad man har lyst til at proppe i den). Størrelsen af array'et sættes til en eller anden størrelse, f.eks. 10.

Inde i koden (konstruktøren) til vector står der så noget ala (forsimplet):
int size = 10;
int internal_array[size];

Hver gang man laver en push_back tælles en tæller én op.
if(tæller > size)
{
  //lav nyt array som er størrer (f.eks. dobbelt så stort).
  //kopier elementer fra "gammelt array" over i nyt array
  //dealloker hukommelse fra gammelt array
}


Sig til hvis der er noget du ønsker uddybet :-)

(At lave sin egen vector klasse er en typisk skoleopgave)
Avatar billede venja Nybegynder
06. maj 2003 - 20:52 #9
jeg takker mange gange, nu vil jeg lige "lege" lidt med det  her og se om ikke jeg kan få noget mening ud af det !!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester