Defaultwert Initialisierung
-
@otze: error C2538: new : cannot specify initializer for arrays
@all: sorry für meinen nonsense
-
jo geht echt nich...
double* test = new double[20]; ZeroMemory(test,sizeof(double)*20); delete[] test;
so klappts aber(aber leider nur da, wo die windows.h is :()
-
Ich hab das ganze mal mit ein paar Compilern von MS probiert, und das folgende kam dabei heraus:
VC++ 6: Initialisierung findet nicht statt,
VC++ 7.1 & VC++ 8: Initialisierung erfolgt beim Aufruf mit ...()Also denk ich wohl, dass ein standardkonformer Compiler die Initialisierung schon ausführt.
-
Kühl! :p
Das haut hin. Mal sehen ob das schneller als ne olle Schleife ist...
-
ZeroMemory ist nur ein Makro, das memset benutzt.
Man könnte einfach std::fill, std::memset nehmen...
-
@otze:
Schmeiss' die windows.h raus und mach#include <memory.h> ... memset(test, 0, sizeof(double)*20);
Ich weiss leider nicht so genau, ob es im Standard einen äquivalenten Header ohne das .h gibt
So bist Du auf jeden Fall den unnötigen Windows-Ballast los.[edit]mist, schon wieder zu langsam[/edit]
-
//schnipp
-
Deadlef schrieb:
Ich weiss leider nicht so genau, ob es im Standard einen äquivalenten Header ohne das .h gibt
#include <cstring> #include <memory>
-
memory hat aber mit memset nichts zu tun.
-
Soweit ich das sehe ist eine Initialisierung in einer For-Schleife praktisch kaum langsamer als std::memset.
Wahrscheinlich geht es eh nicht groß schneller... der Compiler wird sich das intern schon so optimieren wie er es braucht (hoffe ich mal)
-
@Shlo: wozu #include<cstring> ?
-
memset macht nix anderes, ist aber viel schöner als ne forschleife,ausserdem ist die stl dazu da benutzt zu werden, aus einigen gründen, die hier aufzuführen etwas am thema vorbeigehen würden
-
freshman: Weil memset dort deklariert ist.
otze: memset ist nicht Teil der STL.
-
sicher? shame on me(aber nichts destotrotz trotzdem da um benutzt zu werden)
-
... und jetzt wo ich das weiß, benutze ich es auch fleissig.
-
otze schrieb:
memset macht nix anderes, ist aber viel schöner als ne forschleife,ausserdem ist die stl dazu da benutzt zu werden, aus einigen gründen, die hier aufzuführen etwas am thema vorbeigehen würden
Dieses sieht auch schön aus
double arr[100] ={0.0};
-
@desert pinguin: da können wir beide uns ja die Hand geben, wenn es um das nicht verstehen des posts geht
-
Die STL ist eine Library, die in der Standardlibrary aufgegangen ist. Es ist nicht 100% richtig, aber auch nicht sehr verkehrt, wenn man den Teil Algorithmen - Iteratoren - Container immer noch STL nennt. Der ganze Rest, insbesondere die C-Standardlibrary, gehört aber nicht dazu.
BTW wenn man was C++-spezifisches sucht, kann man auch uninitialized_fill/uninitialized_fill_n (<memory>) benutzen, auch wenn das IMHO schon an geistige Onanie grenzt.
-
Bashar schrieb:
memory hat aber mit memset nichts zu tun.
aber mit uninitialized_fill
-
freshman schrieb:
@desert pinguin: da können wir beide uns ja die Hand geben, wenn es um das nicht verstehen des posts geht