09. marts 2003 - 19:22Der er
8 kommentarer og 1 løsning
Oprettelse af string array ved return af size fra en funktion
Heisan....
int sf_antal = Lexer.HentAntalSymboler(); string sf[ sf_antal ] = Lexer_HentSymbolfoelge();
som i kan se vil jeg gerne oprette et string array med størrelsen der er blevet returneret fra en funktion. Men dette kan jeg ikke, fordi jeg åbenbart ikke kan oprette et string array med en variabel størrelse. Hvordan løser jeg dette?
Muligheden ligger måske i at oprette en pointer til string array'et. Men jeg vil gerne have hele objektets data med over.
int sf_antal = Lexer.HentAntalSymboler(); string * sf= new *string[ sf_antal ]; // går det her godt??? assert(sf); og så en loop til at initialisere sf for (int idx = 0; idx < sf_antal; idx) sf[idx] = new string(Lexer_HentSymbolfoelge());
#include <vector> #include <string> int sf_antal = Lexer.HentAntalSymboler(); std::vector<std::string> sf; sf = Lexer.HentSymbolfoelge();
Det kræver så at HentSymbolfoelge() skrives om til at returnere en std::vector<std::string>. Og omkostningen er et kald af std::strings copy constructor for hvert element i vektoren, når du returnerer (call by value, også for returværdier).
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.