"We are back" « oc.at

[C++] Mehrdimensionales dynamisches Array

thorn][bySSG 14.08.2002 - 08:21 4748 53
Posts

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
Brauche da mal Hilfe!!

Weiß irgendwer wie man ein mehrdimensinales Array ( char - Feld ) zur Laufzeit generiert, bei einer Klasse ???

Ein einfaches is ja ka Prob, einfach mit dem new Operator, aber des ????:bash:


mfg
@lph4

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Geht nicht. Abhilfe:

char *p = new char[x*y*z];

Oder du schaust dir die Collections der STL an, dann sparst du dir die Verwaltung überhaupt.

Was willst du denn speichern?

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
Des Prob is, dos ich eine Prog schreiben muß was eine Veriloc Netlist bearbeitet und analysiert, dieses Ding hat fast eine Mille Zeilen:D .
Meine derzeitige Version arbeitet mit I/O und braucht exakt 9 h und 42 min zur abarbeitung.
Des muß ich beschleunigen.

Dachte da so an :

class xxx
{
private:

char * abc

}

und später dann

abs = new char[25] [200]

und dann noch ein paar Methoden zum import und export in andere Klassen.

Was meinst ?

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Nimm dir die Antwort vom that zu Herzen, aber bevor du irgendwas machst, lass dein Programm mal durch einen Profiler laufen. Da wirst du dann schon sehen, was zu tun ist.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Ich würde die Strukturen mit Klassen so auflösen, dass du keine mehrdimensionalen Arrays brauchst. Für Strings bietet sich z.B. die Klasse "string" an, und für jede Struktur in deiner Netlist (hab keine Ahnung, wie sowas ausschaut) eine eigene Klasse. Zum Speichern benutzt du dann vector, deque, map, list, oder was auch immer, von deiner Hauptstruktur.

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
@Ringding

Versteh ich nicht

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
Mit der Klasse string bin ich nicht so vertraut, hab mein Tut verlegt.
Ich brauch die komplette Netzliste im Speicher weil ich sie ca. 20 000 bei der Analyse verwende.
Mit I/O gehts zwar aber viel zu langsam, muß so schnell wie möglich sein.

Und schon langsam bin ich verzweifelt, keiner in der sch*** Firma kann mir da so richtig weiterhelfen.
Bin doch nur Praktikant.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Du schreibst ein Programm, das 10 Stunden läuft und kennst keinen Profiler? Schäm dich!

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Wenn alle bis auf eine Dimension des Arrays fix sind, dann geht's schon:

typedef char mdim[1][7][21];
mdim *a = (mdim *) new char[sizeof(mdim) * 50];

Letztes Element ist dann (*a)[49][6][20];

Musst es halt dann mit delete[] (char *) a; freigeben.

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
@Ringding

Was soll ich machen, Profiler sagt mir rein gar nix.

Bin zu der Aufgabe gekommen wie die Jungfrau zum Kind.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Ein Profiler lässt dein Programm ablaufen und sagt dir nachher genau, welche Zeile und Prozedur wie oft ausgeführt wurde und wie lang jede Prozedur genau gebraucht hat. Dadurch siehst du dann sofort, wo die Performance-Flaschenhälse in deinem Programm sind.

Mit welcher Umgebung arbeitest du denn?

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
Visual Studio

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Nix leichter als das. Schalt in den Linker Settings "Enable Profiling" ein, link neu, und dann führ aus dem "Build" Menü "Profile" aus. Und schon hast du's.

thorn][bySSG

Little Overclocker
Avatar
Registered: Jul 2002
Location: Villach
Posts: 53
@Ringding

Des Funkt !!!

Ich sag mal danke an alle und werd jetzt mal den Tag über versuchen des Prob zu lösen

xdfk

pädagogisch wertvoll
Avatar
Registered: Sep 2000
Location: Graz
Posts: 6441
wenn das programm zu langsam ist: schnelleren pc kaufen :D :D

macht microsoft ja auch so ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz