Double speichern
-
Hallo,
Ich wollte mal nachfragen ob es einen elegantere Lösung gibt um Doubles zu speichern als :
double t = new double[wert];
da man ja mit dieser Methode schnell die Rechenleistung an ihre Grenzen zwingen kann wenn man oft diese Methode benutzt und ich muss oft double speichern.
Vielen dank für Ihre Hilfe
-
Ich wollte mal nachfragen ob es einen elegantere Lösung gibt um Doubles zu speichern als
Oder vielleicht erst eine funktionierende?
-
Wie erst ein funktionierendes?
-
eine funktionierende halt...
double t = new double[wert]; funktioniert mit sicherheit nicht in C++...
double* t = new double[anzahl];
wäre eher die richtige syntax. Beachte, dass in den eckigen klammern die anzahl der Elemente steht.Und nein es gibt keine elegantere lösung...
-
So wie du das da schreibst, geht es überhaupt nicht (oder meintest du double* und ein Array of doubles). Wenn dann eher einfach so:
double t=5.;
EDIT: Und was du mit rechenintensiv meinst, musst du auch mal erklären.

-
Jocker16 schrieb:
Und nein es gibt keine elegantere lösung...
Und was ist mit einem std::vector?
-
Hallo und wie benutzt man den std::vector ?
-
ClaudeG schrieb:
Hallo und wie benutzt man den std::vector ?
Indem man eine Minute googelt und sich kurz die grundlegende Syntax anschaut.
-
So. Was du suchst ist im Übrigen std::vector::push_back( );.
EDIT:
Schon wieder zu langsam
.
-
Vielen Dank für deine Hilfe, ich werde dann mal die Vectors versuchen!
-
ClaudeG schrieb:
da man ja mit dieser Methode schnell die Rechenleistung an ihre Grenzen zwingen kann wenn man oft diese Methode benutzt und ich muss oft double speichern.
Vielleicht solltest du hierzu nochmal ein paar Worte verlieren. Wo und wie du hier Rechenzeit durch das Anlegen von double-Arrays verlierst, ist mir nicht klar. Worum geht es in deinem Projekt denn, wieso musst du so oft double-Arrays anlegen und wieso ist das so zeitkritisch?
Btw, schneller ist std::vector sicher nicht, nur so am Rande...
-
Na es ist das Problem dass ich in 17 Fällen die Position von einem Vektor speichern muss und den dann wieder verwenden muss, nun kann es aber meherere Vektoren sein, sagen wir ich benutze 20 Vektoren dann muss ich 17*20 double* t new double[wert] schreiben, und ist doch klar dass wenn die Zahl noch grösser wird dass dann der Speicherplatz zu ende geht nur durch diese Aufgabe!
-
Erläutere es genauer (am besten auch mit Code), dann kann man mal sehen, ob man da ein wenig das Design optimieren kann (bzw. ob überhaupt Handlungsbedarf besteht).
-
Also so schnell ist der speicher durch einen double vektor nicht aufgebraucht. Sagen wir mal du willst nicht mehr als 100 MB Speicher verbrauchen.
Normalerweise ist die größe eines doubles 8 Byte (manchmal mehr, manchmal weniger, hängt vom Compiler ab, aber im Normalfall 8 Byte).
Das macht dann um 100 MB an Arbeitsspeicher zu füllen 131.072.000 doubles. In worten: 131 Millionen und ein paar zerquetschte...
Wenn du also nicht gerade die Weltformel versuchst zu programmieren sollte das eigentlich kein Problem darstellen.
Ansonsten gibts auch noch die Möglichkeit anstatt double ein float zu verwenden, der hat im Normalfall nur 4 Byte --> 262 Millionen floats passen in 100 MB.Bei unter 1000 Doubles brauchst du dir jedenfalls um den Arbeitsspeicher keine Gedanken zu machen (es sei denn, du arbeitest auf embedded geräten, da ist die Sache wieder etwas anders).