Fehler sammeln-Struktur,Array oder Liste?



  • Wie schon gesagt wurde:
    std::vector



  • volkard schrieb:

    Oder Du sammelst die Ausgaben in einem ostringstream! Dann kannste die Fehler nämlich gleich so "anzeigen", wie Du sie anzeigen willst. 😃

    gute idee... ich benötige aber eine tabellen-artige struktur...

    Belli schrieb:

    Wie schon gesagt wurde:
    std::vector

    jop ich glaube ich mach es auch mit vector 😉 ...

    danke erstmal für alle tipps/hilfen/anworten 🙂



  • ich hab eben das gefunden...
    sieht eig auch nicht schlecht aus..

    int *var = 0;     
    var = new int [6]; 
    for (i=0; i<6; i++)  
    {
         std::cout << var [i] << std::endl;
    }
    delete[] var ;      
    var = 0;
    

    dynamische größe des arrays... 😃
    was sagt ihr dazu? ist das einem vektor zubevorzugen oder lieber vektor ? 🙂



  • So wie das da steht, ist das ein Array mit 6 Einträgen ... was ist daran dynamisch?

    Aber weißt Du was? Mach es, wie Du willst ...



  • Vektor macht intern nichts anderes. Nur dass vector Dir eben noch jede Menge zusätzliche Funktionalität mitbietet: Du kannst die Größe ändern, einfach mit push_back anhängen und er wächst selber mit, Du kannst die aktuelle Größe jederzeit rausfinden und das aller aller wichtigste: Es kann Dir nicht passieren, dass Du ein "delete []" vergisst und Du dadurch ein Speicherloch hast, oder aus Versehen irgendwo "delete" ohne "[]" schreibst und das zu einem segfault führt. Und genau deswegen ist vector in ca. 100% der Fälle zu bevorzugen.



  • HalliHallo schrieb:

    was sagt ihr dazu? ist das einem vektor zubevorzugen... ? 🙂

    NEIIIIIHHHHHN!



  • Belli schrieb:

    So wie das da steht, ist das ein Array mit 6 Einträgen ... was ist daran dynamisch?

    Aber weißt Du was? Mach es, wie Du willst ...

    ähhhmmm... nein ist dynamisch ... google mal dynamisches array 😉 ...
    ja mach ich eh, nur ich weiß ja nicht wie ich es will 😃 ... sinnlose antwort aber trozdem danke 😉 ...

    Jester schrieb:

    Vektor macht intern nichts anderes. Nur dass vector Dir eben noch jede Menge zusätzliche Funktionalität mitbietet: Du kannst die Größe ändern, einfach mit push_back anhängen und er wächst selber mit, Du kannst die aktuelle Größe jederzeit rausfinden und das aller aller wichtigste: Es kann Dir nicht passieren, dass Du ein "delete []" vergisst und Du dadurch ein Speicherloch hast, oder aus Versehen irgendwo "delete" ohne "[]" schreibst und das zu einem segfault führt. Und genau deswegen ist vector in ca. 100% der Fälle zu bevorzugen.

    vielen dank 😃
    danke für deine fachlich bezogene und erklärende antwort... das war genau das was ich erfragen wollte 🙂 ...
    jop ok, dann nutze ich lieber vector... 😃 ist ja auch logisch...
    jop mit "new" und "delete" ist immer sone sache 🙄 ...

    vielen dank für alle antworten die eine entsprechende konsitenz und einen der fragestellung angemessenen informationsgehalt hatten ... 😉



  • HalliHallo schrieb:

    manni66 schrieb:

    Was soll ein Strukturarray sein?

    Ansonsten: std::vector

    man kann eine struktur bauen und von dieser ein array anlegen -> strukturarray... kann sein das das nicht der richtige fachbegriff ist... 🙄

    Ja, man zu einem Datentyp ein Array bauen. Was soll besonderes an einer Struktur sein, dass man dazu einen Namen erfinden sollte?



  • manni66 schrieb:

    HalliHallo schrieb:

    manni66 schrieb:

    Was soll ein Strukturarray sein?

    Ansonsten: std::vector

    man kann eine struktur bauen und von dieser ein array anlegen -> strukturarray... kann sein das das nicht der richtige fachbegriff ist... 🙄

    Ja, man zu einem Datentyp ein Array bauen. Was soll besonderes an einer Struktur sein, dass man dazu einen Namen erfinden sollte?

    struktur = eigener datentyp ? 😉

    -> c++ grundlagen

    trozdem ist das dann ein strukturarray... 😉
    int x[100] -> int array 😃



  • HalliHallo schrieb:

    manni66 schrieb:

    HalliHallo schrieb:

    manni66 schrieb:

    Was soll ein Strukturarray sein?

    Ansonsten: std::vector

    man kann eine struktur bauen und von dieser ein array anlegen -> strukturarray... kann sein das das nicht der richtige fachbegriff ist... 🙄

    Ja, man zu einem Datentyp ein Array bauen. Was soll besonderes an einer Struktur sein, dass man dazu einen Namen erfinden sollte?

    struktur = eigener datentyp ? 😉

    -> c++ grundlagen

    eigener Datentype == C++

    -> c++ grundlagen



  • manni66 schrieb:

    HalliHallo schrieb:

    manni66 schrieb:

    HalliHallo schrieb:

    manni66 schrieb:

    Was soll ein Strukturarray sein?

    Ansonsten: std::vector

    man kann eine struktur bauen und von dieser ein array anlegen -> strukturarray... kann sein das das nicht der richtige fachbegriff ist... 🙄

    Ja, man zu einem Datentyp ein Array bauen. Was soll besonderes an einer Struktur sein, dass man dazu einen Namen erfinden sollte?

    struktur = eigener datentyp ? 😉

    -> c++ grundlagen

    eigener Datentype == C++

    -> c++ grundlagen

    c++ entspricht einem eigenen datentyp?
    ich glaube nicht...

    eine struktur ist ein eigener datentyp und die "vorstufe" oder eine "vereinfachte" klasse...
    was du mit eigner datentyp == c++ aussagen willst weiß ich nicht?
    und was dies zur lösung des problems beiträgt weiß ich auch nicht, vll kannst du es mir erklären? :p

    ps. datentyp wird ohne (e) geschrieben 😉



  • HalliHallo schrieb:

    Belli schrieb:

    So wie das da steht, ist das ein Array mit 6 Einträgen ... was ist daran dynamisch?

    Aber weißt Du was? Mach es, wie Du willst ...

    ähhhmmm... nein ist dynamisch ...

    Zeig mir doch bitte an dem von Dir geposteten Beispiel die Stelle, die es dynamisch macht.
    Danke.



  • Belli schrieb:

    HalliHallo schrieb:

    Belli schrieb:

    So wie das da steht, ist das ein Array mit 6 Einträgen ... was ist daran dynamisch?

    Aber weißt Du was? Mach es, wie Du willst ...

    ähhhmmm... nein ist dynamisch ...

    Zeig mir doch bitte an dem von Dir geposteten Beispiel die Stelle, die es dynamisch macht.
    Danke.

    warum stellst du mich in frage ohne vorher selbst mal zu googeln?
    ich will bitte kein flame-wars hier starten...!!
    aber jop ich erkläre es...
    dann erklärst du mir auch bitte warum es nicht dynamisch sein sollte? 😃 (nach deiner Meinung)

    das ist ein dynamisches array nicht derselben meinung? 😃
    hier ist auch die quelle:
    http://www.willemer.de/informatik/cpp/dynamic.htm

    hier nochmal das beispiel:

    int *var = 0;    
    var = new int [6];
    for (i=0; i<6; i++)  
    {
         std::cout << var [i] << std::endl;
    }
    delete[] var ;      
    var = 0;
    

    erklärung:

    - mit "new" -> dynamischer Speicherbereich -> Größe des Arrays als Parameter
    - in einigen fällen weiß das Programm erst nach dem Start wie groß das Array sein muss
    -durch dynamische arrays wird nur dieser "benötigte" Speicher verwendet

    - um ein array während der laufzeit zu erzeugen mit new + typ + anzahl der elemente...
    -> hier wäre dynamik ich kann auch anstatt [6], schreiben:

    var = new int [x];
    

    und jetzt du ... warum ist es nicht dynamisch? 🙄



  • edit:

    @ Belli

    std::vector -> macht soetwas nur intern... oder was meinst du wie das sonst funktioniert? wahrscheinlich ein fall der allseits bekannten code-magie, wahrscheinlich zaubert mir der vektor allozierte speicherbereiche und gibt diese später wieder frei... 😃 *hex hex* 😃 😃 😃

    da der programmierer nicht unbedingt mit "new" und "delete" hantieren möchte bzw. versucht wird in c++ allozierung von speicherbereichen und dessen wieder freigeben weitestgehen zu automatisieren... -> vector!
    (im gegensatz zu C)
    um daraus folgende fehler zu vermeiden... 🙄



  • HalliHallo schrieb:

    var = new int [x];
    

    und jetzt du ... warum ist es nicht dynamisch? 🙄

    var = new int [x];
    

    Ab dieser Zeile steht fest wie groß das Array ist und es ist ab dem Zeitpunkt deswegen NICHT MEHR dynamisch.
    Dynamische Arrays oder die anderen STL-Container können auch noch nach ihrer Definition "wachsen", Dein statisches Array nicht!



  • Tja ... nun hat mir die Antwort schon jemand vorweggenommen ... aber genau so ist es: In Deinem Beispiel wird die Größe einmal festgelegt und nicht mehr verändert, ich sehe da keine Dynamik.
    Und wenn da jemand sich die Mühe machen würde, sie fehleranfällig, wie so was nun mal ist, einzubauen, würde ich mich fragen, warum man da nicht einen fertigen Container aus der STL nimmt ...

    Aber ich glaube, Du bist schon viel zu klug, als dass wir Blödmänner aus diesem Forum hier Dir noch gute Tipps geben können, deshalb lass ich das jetzt mal sein ...



  • MichelRT schrieb:

    HalliHallo schrieb:

    var = new int [x];
    

    und jetzt du ... warum ist es nicht dynamisch? 🙄

    var = new int [x];
    

    Ab dieser Zeile steht fest wie groß das Array ist und es ist ab dem Zeitpunkt deswegen NICHT MEHR dynamisch.
    Dynamische Arrays oder die anderen STL-Container können auch noch nach ihrer Definition "wachsen", Dein statisches Array nicht!

    solangsam wirds mir hier zu blöd... ich brauch mich nicht rechtfertigen, ich habe eine lösung gesucht und gefunden...
    ich weiß auch nicht wie mir das jetzt zur lösung helfen kann soll?
    ich habe eindeutig erklärt was der code tut... das das nur bis dahin dynamisch ist ist mir klar... sollte auch aus meiner erklärung hervorgehen...
    wie kann mir dein kommentar jetzt helfen bzw. nutzen?
    bzw. ist mein problem gelöst und frage schon beantwortet...

    es ist auch bis dorthin dynamisch !! -> so wie ich es brauche und schon wusste!
    oder meinst du ich nutze code den ich nicht verstehe? 😃 zu mal das nur das beispiel von der quelle- aus dem vorhergegangenen beitrag ist 😃 ...

    ich sage ja auch nicht das die größe dynamisch wächst, sondern es alloziert dynamisch speicher während der laufzeit des programms... 😉

    hättest du meine fragestellung ordentlich gelesen wäre das auch klar gewesen... bitte ord. lesen bevor du klugscheißt...
    oder willst du jetzt mit mir diskutieren was ich brauche? 😃

    ps. außerdem ich brauche kein array das "wächst" wie du sagst nur so nebenbei, sondern eines das die größe dynamisch während des Programmablaufs setzt... also genau das was ich gepostet habe...! 😃
    oder weißt du besser was ich brauche bzw. gesucht hatte? 😃
    alternativ noch std::vector... (hier können dann übrigens auch Einträge hinzugefügt werden also es kann wachsen wie du sagst 😃 )



  • Belli schrieb:

    Tja ... nun hat mir die Antwort schon jemand vorweggenommen ... aber genau so ist es: In Deinem Beispiel wird die Größe einmal festgelegt und nicht mehr verändert, ich sehe da keine Dynamik.
    Und wenn da jemand sich die Mühe machen würde, sie fehleranfällig, wie so was nun mal ist, einzubauen, würde ich mich fragen, warum man da nicht einen fertigen Container aus der STL nimmt ...

    Aber ich glaube, Du bist schon viel zu klug, als dass wir Blödmänner aus diesem Forum hier Dir noch gute Tipps geben können, deshalb lass ich das jetzt mal sein ...

    std::vector ist ein stl-container...
    hab doch schon gesagt ich nutzt das... ließt du nicht mal meine antworten oder was?
    zumal mein array dynamisch ist bis diese zeile ausgeführt wird wie schon gesagt...
    und genau so brauch ich das... ich brauch es nicht "wachsend"....
    kluge tipps sidn immer gerne gesehen

    aber ihr zwei wollt mir erklären was ich in mein programm machen will...
    aber wahrscheinlich bist du einfach soklug das du mir antworten gibst auf fragen die ich nie gestellt habe und hast trozdem die richtige antwort...

    zumal du ja nochnicht mal richtig liest... da ich nur gesagt habe das die GRÖ?E ZUR LAUFZEIT DYNAMISCH FESTGELEGT WIRD!!!
    nicht ein dynamisch wachsendes array... -> ist wie du siehst ein unterschied...!

    ps. ich nehme immer gerne ein rat an...
    aber wo ist dein rat bzw was?... du sagst das es nicht dynamisch wächst... ist richtig aber der speicherbereich wird dynamisch allociert was genau das ist was ich suche... also wo ist dein rat? oder was soll mir deine aussage helfen "es wächst nicht dynamisch, erkläre mal wo das dynamisch ist..." soll?
    -> hab ich nie gesagt das es dynamisch größer wird!! verstehst du das?

    du machst einfach sinnlose bemerkungen genau wie michelrt...
    also sagt du mir jetzt warum du in einem thema wo eine frage existiert postest obwohl dein beitrag nix zu lösung beiträgt da schon alles gelöst ist?...
    -> ist für mich sinnlos und flaming ...
    aber du hilfst mir ja nur oder? 😃 😃 😃



  • Belli schrieb:

    Tja ... nun hat mir die Antwort schon jemand vorweggenommen ... aber genau so ist es: In Deinem Beispiel wird die Größe einmal festgelegt und nicht mehr verändert,

    ich sehe da keine Dynamik.

    Und wenn da jemand sich die Mühe machen würde, sie fehleranfällig, wie so was nun mal ist, einzubauen, würde ich mich fragen, warum man da nicht einen fertigen Container aus der STL nimmt ...

    Aber ich glaube, Du bist schon viel zu klug, als dass wir Blödmänner aus diesem Forum hier Dir noch gute Tipps geben können, deshalb lass ich das jetzt mal sein ...

    zu mal deine aussage als ganzes schon ungenau ist...

    da dort definitiv eine dynamische belegung von speicherbereichen mit "new" stattfindet... -> also dynamik ist dort schon nur nicht dauerhaft... 😃

    also ist dein beitrag nicht nur sinnlos sondern gänzlich FALSCH!

    außerdem fehlen dir c++ grundlagen...:
    array ist ein statischer speicherbereich fester größe...
    wenn ich die größe zur Zeit des Programmablaufes festlege, belege ich die benötigten Speicherbereiche dynamisch zur laufzeit des programms du schlaukopf... aber belli hat gesprochen und ist nicht belehrbar... ließt wahrscheinlich noch nicht mal richtig ! 😃 ...



  • Guten Tag.

    Ich sehe das gleich; nur weil new[] verwendet wurde ist noch lange nichts dynamisch. Ist ein Vergrössern / Verkleinern gewünscht, so hat man stets noch alles manuell zu allozieren / zu kopieren / freizugeben (vgl. std::vector<T> ).

    HalliHallo schrieb:

    ähhhmmm... nein ist dynamisch ... google mal dynamisches array 😉 ...

    Kein besonders gutes Argument. Nur weil Google etwas zu einem Stichwort ausgibt, ist es noch lange nicht das, was man gesucht hat. Oder allgemeiner formuliert: Nur weil jemand etwas sagt, muss es noch lange nicht stimmen.

    HalliHallo schrieb:

    manni66 schrieb:

    HalliHallo schrieb:

    manni66 schrieb:

    Was soll ein Strukturarray sein?
    Ansonsten: std::vector

    man kann eine struktur bauen und von dieser ein array anlegen -> strukturarray... kann sein das das nicht der richtige fachbegriff ist... 🙄

    Ja, man zu einem Datentyp ein Array bauen. Was soll besonderes an einer Struktur sein, dass man dazu einen Namen erfinden sollte?

    struktur = eigener datentyp ? 😉

    Wie du schon richtig erkannt hast, kann es sein, dass dies nicht die richtige Bezeichnung ist. "Ein Array an Strukturen" wäre vollkommen legitim. Was deine letzte Bemerkung aussagen soll ist mir schleierhaft. Ich bin der Überzeugung, dass manni66 sehr wohl weiss, was struct s sind.

    HalliHallo schrieb:

    -> c++ grundlagen

    Mmhhh... wer im Glashaus sitzt, ...

    HalliHallo schrieb:

    eine struktur ist ein eigener datentyp und die "vorstufe" oder eine "vereinfachte" klasse...

    Bullshit, daher -> c++ grundlagen

    HalliHallo schrieb:

    ps. datentyp wird ohne (e) geschrieben 😉

    Da wir schon bei dem Thema sind, kann ich dir bestimmt eine Webseite vorschlagen, die dir gefallen wird: http://deppenleerzeichen.de/

    HalliHallo schrieb:

    Belli schrieb:

    ähhhmmm... nein ist dynamisch ...

    Zeig mir doch bitte an dem von Dir geposteten Beispiel die Stelle, die es dynamisch macht.
    Danke.

    warum stellst du mich in frage ohne vorher selbst mal zu googeln?[/quote]lol, du denkst ernsthaft, er weiss es nicht und möchte sich von dir belehren lassen? Das war eine Suggestion.

    HalliHallo schrieb:

    hier ist auch die quelle:
    http://www.willemer.de/informatik/cpp/dynamic.htm

    Abfall! Fortan nicht mehr verwenden.

    HalliHallo schrieb:

    - mit "new" -> dynamischer Speicherbereich -> Größe des Arrays als Parameter
    - in einigen fällen weiß das Programm erst nach dem Start wie groß das Array sein muss

    Und dadurch wird das Array dynamisch, weil...?

    HalliHallo schrieb:

    -durch dynamische arrays wird nur dieser "benötigte" Speicher verwendet

    Auch bei Compiletime-Arrays wird nur der benötigte Speicher verwendet.

    HalliHallo schrieb:

    - um ein array während der laufzeit zu erzeugen mit new + typ + anzahl der elemente...
    -> hier wäre dynamik ich kann auch anstatt [6], schreiben:

    var = new int [x];
    

    Und? Das Array ist dennoch für immer nur so gross wie x es einmal vorgegeben hat.

    HalliHallo schrieb:

    und jetzt du ... warum ist es nicht dynamisch? 🙄

    Weil es während der gesamten Programmlaufzeit immer gleich gross ist.

    HalliHallo schrieb:

    edit:

    @ Belli

    std::vector -> macht soetwas nur intern... oder was meinst du wie das sonst funktioniert? wahrscheinlich ein fall der allseits bekannten code-magie, wahrscheinlich zaubert mir der vektor allozierte speicherbereiche und gibt diese später wieder frei... 😃 *hex hex* 😃

    Nö aber da wird es einem abgenommen, das Vergrössern / Verkleinern usw. (was den Container schlussendlich dynamisch macht) zu implementieren.

    HalliHallo schrieb:

    solangsam wirds mir hier zu blöd...

    Dann troll dich.

    HalliHallo schrieb:

    wie kann mir dein kommentar jetzt helfen bzw. nutzen?

    Vielleicht hörst du dann auf so (zu unrecht) rechthaberisch zu sein und siehst mal ein, dass man nicht immer recht haben kann. -> c++ grundlagen

    HalliHallo schrieb:

    zumal mein array dynamisch ist bis diese zeile ausgeführt wird wie schon gesagt...

    Aber das nennt man nicht dynamisch.

    HalliHallo schrieb:

    zumal du ja nochnicht mal richtig liest... da ich nur gesagt habe das die GRÖ?E ZUR LAUFZEIT DYNAMISCH FESTGELEGT WIRD!!!
    nicht ein dynamisch wachsendes array... -> ist wie du siehst ein unterschied...!

    Ein Array, das während der gesamten Laufzeit immer gleich gross ist, ist aber kaum dynamisch.

    HalliHallo schrieb:

    außerdem fehlen dir c++ grundlagen...:
    array ist ein statischer speicherbereich fester größe...
    wenn ich die größe zur Zeit des Programmablaufes festlege, belege ich die benötigten Speicherbereiche dynamisch zur laufzeit des programms du schlaukopf... aber belli hat gesprochen und ist nicht belehrbar... ließt wahrscheinlich noch nicht mal richtig ! 😃 ...

    Haha 😃 oh man, du bekommst 8/10 von mir weil ich herzlich lachen musste. Die zwei Punkte bekommst du aber nicht weil es ein wenig zu offensichtlich ist und weil du dich wiederholst (der Troll, bei dem du andere belehren willst, kam schon recht oft vor).

    PS: Bist zu zufälligerweise der Forentroll WerWieWas?

    PPS: Da du vorhin einen Tippfehler angekreidet hast, kann ich mir auch das hier nicht sparen: http://www.das-dass.de/


Anmelden zum Antworten