Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » MFC & STL / Gültigkeitsbereich

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.10.2004, 19:02 Uhr
tronaccount



Hallo!

Ich verwende in meiner MFC-Anwendung einen STL-Vektor, um die Länge dynamisch zu halten.

Jetzt habe ich den Vektor lokal im Dokument (bei Einlesen von Werten in meiner Serialize()-Funktion) erzeugt, möchte aber im ganzen Projekt mit diesem Vektor arbeiten.

Ich komme aber nichtmal im Rest des Dokuments an den Vektor dran - geschweige denn im ganzen Projekt. Ich benutze die STL wirklich nur am Rande und habe nicht allzuviel Ahnung davon - kann mir jemand einen Tip geben, wie ich das Ding global verwendbar mache?

Danke,
Tobias
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.10.2004, 19:44 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von tronaccount:

Jetzt habe ich den Vektor lokal im Dokument (bei Einlesen von Werten in meiner Serialize()-Funktion) erzeugt, möchte aber im ganzen Projekt mit diesem Vektor arbeiten.




Wenn du den Vektor lokal in einer Methode definierst ist er ja auch nach verlassen des Blocks der Methode nicht mehr vorhanden.
Wenn du also permanent mit dem Vector arbeiten möchtest musst du ihn zu einem Attribut des Dokuments machen.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.10.2004, 19:55 Uhr
tronaccount



Also, in meiner Serialize steht folgendes:


C++:
void CSDIFrameDoc::Serialize(CArchive& ar)
{
...
...
vector< vector< vector< vector<double> > > > animData(timeSteps);
...
...
}



Also ist mein animData[][][][] lokal in der Serialize() bekannt - nicht aber im ganzen Dokument.
Ich habe die Definition (eigentlich ist ja eine Initialisierung) mal in den Header gesetzt - erwartungsgemäß klappt das nicht. Gibt es eine Möglichkeit, das STL-Objekt im Header zu definieren?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.10.2004, 14:18 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von tronaccount:
Also, in meiner Serialize steht folgendes:


C++:
void CSDIFrameDoc::Serialize(CArchive& ar)
{
...
...
vector< vector< vector< vector<double> > > > animData(timeSteps);
...
...
}



Also ist mein animData[][][][] lokal in der Serialize() bekannt - nicht aber im ganzen Dokument.
Ich habe die Definition (eigentlich ist ja eine Initialisierung) mal in den Header gesetzt - erwartungsgemäß klappt das nicht. Gibt es eine Möglichkeit, das STL-Objekt im Header zu definieren?


Im Header wird nichts initialisiert! Deklarier im Header des Dokuments ne Variable deines Monster-Datentyps und initialisier sie im Konstruktor!

Generell würde ich dir aber raten dir erstmal nen gutes C++ Buch zu kaufen.Da scheint ja einiges im argen zu liegen....

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.10.2004, 15:21 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

vector< vector< vector< vector<double> > > > animData(timeSteps);


oh jeah darf ich fragen was da geiles hinter der datenstruktur steht?... ich war ja mal fast so weit ein 3 d vector zu nehmen... das war allerdings ein vector von strukts... aber 4d vector hat schon echt mal was...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.10.2004, 15:42 Uhr
Spacelord
Hoffnungsloser Fall


Vor allem kann aus diesem Datentyp,bereits bei "bescheidenen" Dimensionen, nen absoluter Speicherfresser werden...

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.10.2004, 16:48 Uhr
tronaccount



Das sind die Daten für eine dresimensionale Struktur mit ihren dreisimensionalen mechanischen Schnittgrößen. Ist schon einiges...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.10.2004, 17:40 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


naja die frage ist ob man das nicht vielleicht geschickter modellieren kann mit weniger dimensionen (auch wenn es in der relaität vielleicht mehr dimensionen hat) um performanter und speicherfreundlicher zu sein...

das liegt ganz einfach daran das der von vector vorgehaltene speicher exponentiell wächst... das heisst hat der mal kein platz zum einfügen mehr allokiert der gleich das doppelte vom letzten mal... das tief bis in alle dimensionen rein kann schnell den speicher sinnlos vollkloppen...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 12.10.2004 um 17:41 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.10.2004, 17:51 Uhr
tronaccount



Hmmm - also ich belege auch alle Felder, die ich anfordere...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
12.10.2004, 18:05 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


jo, nur der vector ist "so schlau" das er dann gleich wenn er keinen platz mehr hat wieder platz für mind genausoviele elemente anlegt, wenn dieser wieder voll ist, legt er wieder an usw.

d.h

Anfang:

Code:
vector - daten
0 - 0
2 - 1 <- realloc 2
2 - 2
4 - 3 <- realloc 4
4 - 4
8 - 5 <- realloc 8
8 - 6
8 - 7
8 - 8
16 - 9 <- realloc 16


usw

in dem beispiel haste dann zwar nur 9 felder angefordert, der angeforderte speicher umfasst aber 16 elemente
--
class God : public ChuckNorris { };

Dieser Post wurde am 12.10.2004 um 18:06 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: