Fleksibel liste af vektorer

Tags:    c++

Jeg springer lige til spørgsmålet, hvad er der galt her?

vector<int>* Res = (vector<int>*)malloc(sizeof(vector<int>;));
cout << Res[0].size();
Res[0].push_back(5);

Den brokker sig over tredje linie; den kan nemlig godt fortælle at den første vektor er tom.

Og hvad menes der med standard input og output? Jeg skal lave et program der bliver testet på tid, så det kan vel kun betyde at oplysningerne bliver sendt gennem de parametre programmet bliver åbnet med?

// Your brain is your weapon, do not waste it!!



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
vector<int>* Res = (vector<int>*)malloc(sizeof(vector<int>;));


Du bør ikke bruge malloc() til at oprette objekter i C++, for i så fald kører constructoren for klassen ikke. I dette tilfælde betyder det sandsynligvis at alle medlemsobjekter i vector<int>-objektet bliver initialiseret til 0 (eller byte-mønstret for 0) - det betyder at den godt kan rapportere den korrekte længde, men hvis du tilgår elementer, forsøger den at manipulere en NULL-pointer.

I stedet skal du oprette objektet således:

vector<int>* Res = new vector<int>;

--
Blog:
http://www.sigkill.dk/blog

[Redigeret d. 15/10-65 13:37:00 af Troels Henriksen]

[Redigeret d. 15/10-05 20:07:08 af Troels Henriksen]



Jeg har fået svar andetsteds fra, hvad der mentes med standard input/output. Det var bare cin/cout (C++) eller scanf/printf (C).

// Your brain is your weapon, do not waste it!!



Det var måske lettere at lave en vector af vectorer.
Der er nogle noter om vectorer her, herunder hvordan man laver vectorer af vectorer:
http://home20.inet.tele.dk/midgaard/tipc20050114.html



Tusinde tak, meningen var nemlig at jeg skulle have noget ligende:
vector<int> Res[Data.size()];

Men da Data.size() ikke er konstant, virkede det ikke. Derfor har jeg brugt ideen om en vektor i en vektor, som du sagde, og det virkede:

Fold kodeboks ind/udKode 


// Your brain is your weapon, do not waste it!!



t