Avatar billede phrame Nybegynder
09. marts 2003 - 19:22 Der 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.

string* sf = Lexer_HentSymbolfoelge();

Kan I anbefale en løsningsmulighed... :)
Avatar billede phrame Nybegynder
09. marts 2003 - 19:24 #1
Forresten så skriver jeg i c++ på en linux box....
Avatar billede segmose Nybegynder
09. marts 2003 - 19:59 #2
Hvad med noget som:

*** utestet ***

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());
Avatar billede phrame Nybegynder
09. marts 2003 - 21:04 #3
Jeg er desværre ikke så interresseret i at bruge new.... findes der en anden løsing...
Avatar billede olennert Nybegynder
09. marts 2003 - 22:10 #4
Hvad med en vector?

#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).
Avatar billede olennert Nybegynder
10. marts 2003 - 11:27 #5
Og som altid med STL (og andre template-baserede ting) bør du starte med en typedef:

typedef std::vector<std::string> Symbolfoelge;
Symbolfoelge sf;
sf = Lexer.HentSymbolfoelge();
Avatar billede phrame Nybegynder
10. marts 2003 - 17:10 #6
Er vector'er ikke blevet depricated fra c++?
Avatar billede olennert Nybegynder
11. marts 2003 - 08:37 #7
Nej, std::vector er en del af STL, som er en del af ANSI C++ Standard Library.
Avatar billede olennert Nybegynder
12. marts 2003 - 11:26 #8
phrame, hvad med at afvise svar, eller give point?
Avatar billede olennert Nybegynder
26. marts 2003 - 18:56 #9
Takker mange gange for point :-)
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