Ok, ich habe aber variable Listen. Aber mit std::vector gehts wohl!
Ts... das kommt davon wenn man in den 80er C gelernt hat und C++ nie
gescheit...
Danke!
1
#include <iostream>
2
#include <vector>
3
4
void proc(std::vector<int> arr)
5
{
6
for (auto id = arr.begin(); id != arr.end(); id++)
Ob man für sowas dynamische Speicherallkation verwenden will, was
std::vector ja mit sich bringt, ist natürlich ne andere Frage. Bei
"PC-Programmieung" wohl kein allzu großer Haken...
Torsten R. schrieb:> Das war, was Klaus M. bestellt hatte.
Sorry, Du hast Recht, so wie er den Beispielcode gebaut hat, fällt die 0
weg.
Ich bezweifle allerdings, dass das auch wirklich seine Intention war.
proc({1,2,3,0,5,2,9,0,3,1}) wird zu proc({1,2,3})
Es geht doch nichts über gescheit formulierte Anforderungen... 🙂
Klaus H. schrieb:> Torsten R. schrieb:>> Das war, was Klaus M. bestellt hatte.>> Sorry, Du hast Recht, so wie er den Beispielcode gebaut hat, fällt die 0> weg.> Ich bezweifle allerdings, dass das auch wirklich seine Intention war.
NULL oder 0 als Ende-Marker wenn die Anzahl der Elemente nicht bekannt
ist, ist so unüblich nicht. Im originalen Code war genau das der Fall,
d.h. proc() hatte keine andere Möglichkeit das Ende des Arrays zu
erkennen.
Johann L. schrieb:> NULL oder 0 als Ende-Marker wenn die Anzahl der Elemente nicht bekannt> ist, ist so unüblich nicht.
getchar benutzt z.B. EOF (-1) als Endezeichen. Damit trotzdem jeder
8Bit-Wert gelesen werden kann, wird der Rückgabewert von unsigned char
nach int gecastet.
Peter D. schrieb:> Johann L. schrieb:>> NULL oder 0 als Ende-Marker wenn die Anzahl der Elemente nicht bekannt>> ist, ist so unüblich nicht.>> getchar benutzt z.B. EOF (-1) als Endezeichen.
getchar iteriert aber nicht über ein Array. Es gibt EOF zurück, wenn
stdin geschlossen wurde.
Peter D. schrieb:> Damit trotzdem jeder 8Bit-Wert gelesen werden kann, wird der Rückgabewert> von unsigned char nach int gecastet.
EOF muss nicht zwingend -1 sein nach standard. Es muss nur negativ sein.
Es ist auch nicht garantiert, dass es keinen gültigen Wert für char
darstellt. Deshalb gibt es zusätzlich die Funktion feof().
Torsten R. schrieb:> Das war, was Klaus M. bestellt hatte.
Korrekt, die "0" ist kein Inhalt, der regulär vorkommt und soll als
Endmarker herhalten. Mir ist inzwischen klar, dass ich das gar nicht
brauche und verwende es auch nicht mehr:
Klaus M. schrieb:> void RenderArea::drawNote(QPainter *painter, enum NH nh, int32_t xs,> int32_t n, int32_t vel, std::vector<int> check_notes)
Du solltest dir überlegen, den vector per Referenz zu übergeben, denn
sonst wird er jedes mal für den Funktionsaufruf komplett in einen neuen
vector kopiert.
Und wenn wir schon beim Code-Review sind:
- Den unnötigen Test auf .empty() weg lassen, weil überflüssig.
- Den ! Operator verwenden, wenn ein boolscher Ausdruck negiert werden
soll.
;-)