Array ohne Konstante als Dimension?
-
was spricht dann gegen ein
T static_array[X];?
-
boost::arrayoderstd::tr1::array(wenn vorhanden).
-
unskilled schrieb:
was spricht dann gegen ein
T static_array[X];?
Vielleicht die Dimension, die konstant sein muss? Ausserdem sind rohe Arrays generell unsicher und unkonfortabel (denke man dabei zum Beispiel an Parameterübergaben).
-
unskilled schrieb:
was spricht dann gegen ein
T static_array[X];?
Das X konstant seien muss.
-
Speedy_92 schrieb:
unskilled schrieb:
was spricht dann gegen ein
T static_array[X];?
Das X konstant seien muss.
huch - hatte ich schon wieder vergessen, bei dem ganzen hin und her... sry
-
@ Speedy_92:
Hast du meinen Hinweis gesehen?
-
Nexus schrieb:
@ Speedy_92:
Hast du meinen Hinweis gesehen?Ja danke, allerdings gibt es std::trl bei mir nicht^^
Aber boost werde ich mir mal anschauen
-
Speedy_92 schrieb:
Ja danke, allerdings gibt es std::trl bei mir nicht^^
Wäre auch
tr1(also eine Eins, nicht TRL).
Aber in einigen Implementationen ist das noch nicht vorhanden...Boost ist sicher nicht schlecht.
-
Nexus schrieb:
Speedy_92 schrieb:
Ja danke, allerdings gibt es std::trl bei mir nicht^^
Wäre auch
tr1(also eine Eins, nicht TRL).
Aber in einigen Implementationen ist das noch nicht vorhanden...Boost ist sicher nicht schlecht.
Also TR*EINS* ist vorhanden

-
Seit wann sind new und delete "eher C" ... ?
Also ich hab die zwei bisher immer in C++ einsortiert, denn malloc und free sind ja eigentlich C...
Bloß weil irgendwas nicht Vector, list oder map ist, heißt es doch nicht gleich, dass es kein C++ ist

-
also ich finde, manchmal übertreibt ihr mit eurem "std::schlagmichtot"-Wahn

-
Was soll das hier eigentlich? Entweder, man nimmt ein statisches Array, da muss die Dimension zur Compilezeit bekannt sein. Das gilt übrigens auch für boost.array.
Wenn man das nicht will, muss man entweder ein dynamisches Array mit new anlegen oder am besten std::vector benutzen. Wenn Du nicht willst, dass man die Dimension anschließend verändern kann, musst Du Dir einen Adapter dafür schreiben.
-
it0101@loggedoff schrieb:
Seit wann sind new und delete "eher C" ... ?
Das hat nichts mit new/delete zu tun, sondern mit Arrays. Die Standardarrays sind C-Relikte die nicht wirklich in das sonstige C++ Umfeld passen:
a) Fehleranfällig
b) Kopieren und Zuweisen ist nicht so ohne weitere möglich
...it0101@loggedoff schrieb:
Bloß weil irgendwas nicht Vector, list oder map ist, heißt es doch nicht gleich, dass es kein C++ ist

...
also ich finde, manchmal übertreibt ihr mit eurem std::schlagmichtot"-WahnModerne C++ Programmierung hat andere Paradigmen als C. Du kannst weiterhin C in C++ programmieren, dies mag zwar auch C++ sein, aber passt häufig nicht zu den Paradigmen wie man heutzutage C++ verwendet. Und es ist meines Erachtens ein Fehler die fehleranfälligen und benutzerunfreundlichen C-Konstrukte zu zeigen, wenn die Standardbibliothek sowie Boost besseres zu bieten hat. Wem std::, boost:: oder std::tr1:: zuviel Schreibaufwand ist, dem ist eh nicht mehr zu helfen (das sind meist diejenigen die auch heute noch kryptische Variablenbezeichnungen verwenden).
Es gibt nicht ohne Grund inzwischen std::tr1::array. Vielleicht solltest du dich lieber mal damit vertraut machen, warum man diese Klasse eingeführt hat, anstatt an C unter C++ festzuhalten. Und es gibt sehr gute Gründe (u.a. Zuweisung...).
cu André
-
it0101@loggedoff schrieb:
also ich finde, manchmal übertreibt ihr mit eurem "std::schlagmichtot"-Wahn

tja. dafür haben die leute mit dem "std::schlagmichtot-Wahn" ihr programm schon fertig, während du noch segfaults suchen gehst und memleaks fixt.