Länge eines int arrays bestimmen ?
-
@Nexus,
Dir ist ein kleiner Fehler unterlaufen
template<std::size_t Size> std::size_t length(int (&array)[Size]) { return Size; }@blurry333,
Ja, das meint Nexus. Die Länge wird nirgends gespeichert, für die Speicherung ist man selber zuständig. Solange man wirklich noch ein Arrayobjekt hat, kann man diesen "Trick" verwenden, welcher die Grösse zur Kompilezeit herausfindet. Sobald man allerdings nur noch einen Zeiger hält, hat man keine Möglichkeit mehr die Grösse herauszufinden.Deshalb verwendet man normalerweise auch die Container aus der Standardbibliothek:
http://www.cplusplus.com/reference/stl/Oder aus dem TR1/Boost:
boost::arrayGrüssli
-
blurry333 schrieb:
hi ,
was meinst du damit. Soll ich mir selber eine Funktion schreiben ?
Ja, und wenn die auch für andere Typen sein soll:
template <class T, size_t N> size_t arraySize(T (&)[N]) { return N; }
-
was ist daran falsch ?
-
sorry

int * x; *x={3,4,5,7};
-
blurry333 schrieb:
int * x; *x={3,4,5,7};
...
Logisch, dass das nicht geht.int array[5] = { 0, 1, 2, 3, 4 }; int *parray = array; parray[2] = 7;Oder
int *parray = new int[5]; parray[2] = 6;
-
blurry333 schrieb:
was ist daran falsch ?
int * x; *x={3,4,5,7};So ziemlich alles.
int*ist nicht gleichzusetzen mit "Array". Nein nein nein. Dir fehlen die Konzepte zu Zeigern und dynamischer Speicherverwaltung. Entweder schnappst Du Dir mal ein gutes Lehrbuch zu C++ oder Du wechselst zu einer anderen Sprache, wie zB Python.
-
krümelkacker schrieb:
oder Du wechselst zu einer anderen Sprache, wie zB Python.
Wegen? Und warum gerade Python? Sinnlos diese Aussage, tut mir Leid.
-
FreakY<3Cpp schrieb:
krümelkacker schrieb:
oder Du wechselst zu einer anderen Sprache, wie zB Python.
Wegen? Und warum gerade Python? Sinnlos diese Aussage, tut mir Leid.

Nur weil Du nicht auf Anhieb verstanden hast, warum ich das gesagt habe, ist es nicht "sinnlos". Erstens war "Python" nur ein Beispiel. Zweitens war es ein Beispiel für eine Sprache, die nutzbar ist, ohne Zeiger und dynamische Speicherverwaltung verstanden zu haben. Drittens ist es ein Beispiel für eine Sprache, in der man relativ weit durch "Rumprobieren" kommt -- etwas, was in C++ viel weniger Erfolg verspricht. Deswegen der Rat, entweder ein Lehrbuch zu besorgen (als 100fach bessere Alternative zu Rumprobieren) oder sich nach einer anderen Sprache umzugucken. Klar soweit?
-
> Drittens ist es ein Beispiel für eine Sprache, in der man relativ weit durch "Rumprobieren" kommt -- etwas, was in C++ viel weniger Erfolg verspricht.
Hast du C++ durch Buch-Pauken gelernt? Ich nicht.
-
Ad aCTa schrieb:
> Drittens ist es ein Beispiel für eine Sprache, in der man relativ weit durch "Rumprobieren" kommt -- etwas, was in C++ viel weniger Erfolg verspricht.
Hast du C++ durch Buch-Pauken gelernt? Ich nicht.
Was ist'n das hier für 'ne Diskussion? Hältst Du es nicht für sinnvoll, jemandem, der Code wie diesen hier
int * i; *i = {1,2,3};schreibt, ans Herz zu legen, die Grundlagen in einem Buch nachzulesen? Ihr geht mir echt grad auf'n Keks, Leute. Ich habe nie behauptet, dass das Lesen eines Lehrbuchs ausreichend ist. Ich halte es aber für notwendig im Falle von C++.
-
Ad aCTa schrieb:
Hast du C++ durch Buch-Pauken gelernt? Ich nicht.
Merkt man ...
... *SCNR*

Ich will mir natürlich kein Urteil über deine Fähigkeiten erlauben. Nur so am Rande, im Thread Matrix hat dein erstes Programm undefiniertes Verhalten ausgelöst und das zweite war auch nicht wirklich der Weisheit letzter Schluss ... tut mir leid, aber konnte wirklich nicht widerstehen

Bitte nicht zu ernst nehmen

@krümelkacker,
Ich würde in jeder Sprache jemandem empfehlen die Grundlagen zu büffeln und das am Besten mit einem Buch oder ähnlichem. Daher finde ich diese eine Aussage auch etwas ... seltsam. Ich verstehe den Sinn dieser Aussage nicht. Wenn du diesen letzten Satz weggelassen hättest, wäre alles in Ordnung
Grüssli
-
Hey Leute last doch diese Diskussion. Ich bin ehrlich gesagt froh dass ihr mir helft. Das ist das entscheidende.
Noch was anderes.
Es scheint ja echt ein problem zu sein , die länge eines int Arrays zu ermitteln. Beim insertion sort z.B. muss man die Länge des arrays als Parameter übergeben. Anders ist es wohl nicht möglich oder ?
-
blurry333 schrieb:
Beim insertion sort z.B. muss man die Länge des arrays als Parameter übergeben. Anders ist es wohl nicht möglich oder ?
Korrekt. Oder man verwendet eben entsprechende Container. Oder man übergibt Iteratoren.
Grüssli
-
Dravere schrieb:
@Nexus,
Dir ist ein kleiner Fehler unterlaufen
Danke, ist korrigiert.
blurry333 schrieb:
Es scheint ja echt ein problem zu sein , die länge eines int Arrays zu ermitteln. Beim insertion sort z.B. muss man die Länge des arrays als Parameter übergeben. Anders ist es wohl nicht möglich oder ?
Das liegt daran, dass Arrays mühsam und unpraktisch sind. Ich verwende zum Beispiel nie Arrays, wenn ich nicht muss (und genau genommen muss man nie).
Alternativen sind der Wrapper
std::tr1::arrayoder gleich die STL-Container. Hier eine Einführung.