[C++] Mehrdimensionales dynamisches Array
thorn][bySSG 14.08.2002 - 08:21 4752 53
h4de5
-
|
@thorn][bySSG: was is so eine netzliste? (typ) mit STL pair/vector/matrix lässt sich des sicher lösen (auch wenns vielleicht mit kannon auf spatzen schießen ändelt). @ringding: des mit dem profiling hab ich auch ned gwust
|
thorn][bySSG
Little Overclocker
|
A Netzliste "beschreibt" alle Zellen eines Chips , Signalfluß, Register, Gatter und den ganzen anderen Dreck auf einem Chip. von 10 MB bis ca. 100 MB. ASCII File, wennst du des meinst
|
h4de5
-
|
![:eek:](/images/smilies/eek.gif) gut dann wirst mit an string nix anfangen :P weis ned, sagt dir die STL was? (standard templäte library) also klassen und funktions Templates. wenn ich zuhause bin kann ich mich ja nochmal schlau machen, aba sowas kannst ja auch mit liste machen oda ? class element { char *inhalt; element *pnext; element () { inhalt = new char (200); pnext = NULL; } } void main() { element *pAnker, *pAkt; pAnker = new element(); pAkt = pAnker; //neues Element mit: pAkt->pnext = new element(); } ich weis ned obst du umbedingt den direkten zugriff (.. [x] ) brauxt oda ned. aba bei ana 100 Mb file im speicher wird ein array eh dumm sein.
|
FreakyDrOC
Addicted
|
probiers doch mal mit verketteten listen - sollt sogar eine vordefinierte klasse dafür geben
verkettete listen sind w00t!
|
thorn][bySSG
Little Overclocker
|
Die STl sagt ma nur vom Namen her was, aber deinen Code versteh ich !!!
I brauch den Direkten Zugriff auf die ganzen Daten im Speicher, weil i damit Arbeiten muß. Mit I/O gehts , aber eine Anforderung is Speed , des Pogramm muß so schnell wie möglich sein und bei der Datenmenge is des verständlich.
Wäre des möglich a char Feld mit 100 MB anzulegen ? Hab 1,5 GB Ram am Server
mfg
|
Ringding
Pilot
|
Sicher ist das möglich.
|
Yeahman
OC Addicted
|
Ich würd dir auch eine verkette Liste ans Herz legen, ist von der Performance sicher sehr gut.
|
h4de5
-
|
@ringding: ja möglich schon aber bei an feld müsstn die 100mb dann als ein stück im speicher liegen, oda ned? es gibt a stl klasse named: list ![:)](/images/smilies/smile.gif) nur kann ich jez schwer wem die stl beibringen.. @thorn][bySSG: was genau verstehts nicht? a zugriffs funktion kannst da ja auch machen, dann hast sowas ähnliches wie an direkten zugriff. /edit: g00gl0r rulez http://www.msoe.edu/eecs/ce/courseinfo/stl/list.htm#include <list> list<TYP> list1; //TYP is ein selber gmachter typ mit den ganzen eigenschaften von so einem Chip.
Bearbeitet von h4de5 am 14.08.2002, 12:57
|
thorn][bySSG
Little Overclocker
|
Hab aber noch nie mit Listen gearbeitet und in meinen Unterlagen is nix gscheites über Listen.
Habts ihr vielleicht a Tut ???
|
FMFlash
tranceCoder
|
ich kenn die aufgabenstellung zwar nicht wirklich, aber so wie sich das anhört würd ich die klassen und das char array weglassen und stattdessen die daten deiner liste in einer struktur speichern, von dessen typ du dann leicht ein 1-dimensionales array erstellen kannst typedef struct tagDATA { element 1 ... element 2 ... element 3 ... ... } DATA; ... wenn du weiss wieviele einträge die liste hat -> DATA* data = new DATA [x]; wenn das posting umsonst war weils zu deiner problemstellung nicht passt, macht auch nix, hab sowieso grad nix zu tun ps: ich stelle mal meine meinung in den raum das klassen unübersichtlich sind und vorgänge nur unnötig komplizieren
|
Ringding
Pilot
|
Was wollt ihr da alle mit euren Listen, wenn er ein Array braucht? Das Array hat den Vorteil, dass man auf alle Einträge sofort zugreifen kann, und bei der Liste kannst nur einen nach dem anderen abarbeiten.
Array ist natürlich in einem Stück im (virtuellen) Speicher. Wen stört's?
|
FreakyDrOC
Addicted
|
ps: ich stelle mal meine meinung in den raum das klassen unübersichtlich sind und vorgänge nur unnötig komplizieren ![:confused:](/images/smilies/confused.gif) oder kanns sein, dasst einfach des klassenkonzept net durchschaut hast? klassen sind in der regel ein wenig langsamer, aber nicht umsonst rult java!
|
FreakyDrOC
Addicted
|
Was wollt ihr da alle mit euren Listen, wenn er ein Array braucht? Das Array hat den Vorteil, dass man auf alle Einträge sofort zugreifen kann, und bei der Liste kannst nur einen nach dem anderen abarbeiten.
Array ist natürlich in einem Stück im (virtuellen) Speicher. Wen stört's? arrays sind lame du sagtest sie sind in einem stück, jetzt rat amal was passiert, wenn du dynamisch was dazuhängen willst... neuer speicherbereich wird angelegt (alte größe + neu) gesammtes array wird in neuen speicherbereich kopiert
|
FMFlash
tranceCoder
|
oder kanns sein, dasst einfach des klassenkonzept net durchschaut hast? klassen sind in der regel ein wenig langsamer, aber nicht umsonst rult java!
ich halts nicht für notwendig variablen und funktionen in eine klasse zu stecken die wiederum in sektionen unterteilt ist bei denen man aufpassen muss (vor allem beim datenaustausch von klassen untereinander) das sie sich auch ja "sehen" können, und als krönung für jede klasse 2 seperate files mit deklaration (.h) und implementierung (.cpp) zu verwalten ![:confused:](/images/smilies/confused.gif) oder kanns sein, dasst einfach kein anderes konzept kennst als klassen
|
Ringding
Pilot
|
@FreakyDrOC:
1. Wer sagt, dass er das unbedingt muss? 2. Wenn man es muss, dann macht man es selten. Die entsprechende Klasse der STL macht das natürlich automatisch. 3. Wo ist das Problem? Braucht er halt 200MB von 1.5 GB, und die auch nur kurzfristig.
Natürlich haben sowohl Arrays als auch Listen ihre Berechtigung. Nachdem ich aber nicht weiß, was das Programm tut, weiß ich auch nicht, ob eher die Liste oder eher das Array günstig ist. Jede Variante hat ihre guten und schlechten Seiten. Auch sehen wir hier ein typisches Beispiel für den alten Performance/Memory Trade-Off.
Bearbeitet von Ringding am 14.08.2002, 13:10
|