Vektor im private-Bereich nur 1 Element? [gelöst]



  • eh kurze Frage:

    ist nicht das statisch:

    int statisch[10];
    

    //Größenangabe während dem programmieren

    und DAS dynamisch ?

    int size= 100;
    int* Array = new int[size];
    

    //Größenangabe variabel (=dynamisch)



  • christianz schrieb:

    und DAS dynamisch ?

    int size= 100;
    int* Array = new int[size];
    

    //Größenangabe variabel (=dynamisch)

    Hm, tja, prinzipiell ist dies ein dynamisch erzeugtes Array von statischer Größe. Wenn man von einem dynamischen Array spricht, meint man damit, dass die Größe des Arrays selbst dynamisch ist.

    Grüße Joe_M.



  • akari schrieb:

    In C++ gibts es std::vector. Die Entsprechung in C wäre bestenfalls ein dynamisches Array, aber ganz bestimmt kein statisches Array.
    Der Begriff Array steht bereits für eine sequentielle Menge von Elementen. Ein Feld ist ein Element eines Arrays.

    Nee, da geh ich nicht mit. Ein Array ist ein (Daten)Feld und ein einzelnes Teil des Array ist ein Feldelement. Und ob es statisch oder dynamisch ist hat doch mal überhaupt nix damit zu tun -> Eine Wanderdüne ist, trotzdem sie wandert, eine Düne... 😃
    Und ich bleibe auch dabei, dass eindimensionale Felder (Arrays) in C++ oft auch als Vektoren bezeichent werden... Ich werd mal n Beispiel suchen. 🕶

    int size= 100;
    int* Array = new int[size];
    

    Dynamisches Array von statischer Größe? Kapier ich nicht... size ist doch nicht const, ich kann es später verändern... also ist die Größe doch dynamisch? 😕

    Edit: Es hat sich ja nun ergeben, dass der Code läuft und die richtigen Zeichen in FrameBuff[] stehen. Frage: Warum werden weder im Debug-Inspektor noch in der Liste überwachter Ausdrücke die richtigen Zeichen angezeigt (bei echter Kommunikation und korrektem Ergebnis), wenn ich FrameBuff[] als private im Header deklariere? (Wenn ich FrameBuff[] global deklariere wirds in beiden richtig angezeigt.)
    Ist BCB3 einfach so schlecht?



  • Kolumbus schrieb:

    int size= 100;
    int* Array = new int[size];
    

    Dynamisches Array von statischer Größe? Kapier ich nicht... size ist doch nicht const, ich kann es später verändern... also ist die Größe doch dynamisch? 😕

    Ein dynamisches Array passt die Größe automatisch an. Wie bei vector eben. Oder bei TStringList.



  • Ahh - automatische Größenänderung ist dynamisch und Codegesteuert nicht... gut, dann merk' ich mir das so!

    @ Array / Feld / Vektor:

    Wikipedia schrieb:

    Array (Feld)

    Das Array ist die einfachste verwendete Datenstruktur. Es werden hierbei mehrere Variablen vom selben Basisdatentyp gespeichert. Ein Zugriff auf die einzelnen Elemente wird über einen Index möglich. [...] Im eindimensionalen Fall wird das Array häufig als Vektor und im zweidimensionalen Fall als Tabelle oder Matrix bezeichnet. [...]

    ...



  • Vektor != std::vector

    Ein Blick in die C++-Standardbibliothek ist ratsam.



  • vec_thor schrieb:

    Vektor != std::vector

    Worum geht es hier eigentlich? Ich rede die ganze Zeit von Vektor (man möge meinen Eröffnungs-Post lesen). Akari meinte, mein Array im Eröffnungs-Post sei kein Vektor. Ein eindimensionales Feld (ja, allgemein wird in der Programmierung ein Array auch Feld genannt - einfache Übersetzungsaufgabe 🙄 ) wird aber nunmal allgemein oft als Vektor bezeichnet. Das das nichts mit std::vector zu tun hat war von Anfang an klar und das hat auch keiner bestritten.
    Wozu muss man da in die C++-Standardbibliothek schauen? 👎



  • Wenn man in C++ von einem Vector (Deutsch Vektor) redet, dann meint man eigentlich grundsätzlich die gleichnamige Containerklasse.
    Unter anderem ist es auch darum ratsam, sich erstmal mit den Grundlagen von C++ zu beschäftigen.
    Dabei hilft dir ein Blick in die C++-Standardbibliothek.

    BTW
    -Der Rat ist nicht böse gemeint-



  • Hallo

    Okay das mit dem Array != Feld ist wohl nicht richtig. Vermutlich habe ich wenn ich drüber nachdenke in Posts hier auch schon beides gleichgesetzt. Also zieh ich das mal zurück.

    Wie aber schon gesagt ist in C++ der Begriff Vektor/vector bereits mit dem gleichnamigen Datentyp belegt. Hier finde ich eine saubere Trennung in C-Style Array (egal ob statisch oder dynamisch) und std::vector schon wichtig, bietet doch der std::vector wesentlich mehr Funktionen.

    bis bald
    akari



  • Da muss man erst frech werden, eh man eine zusammenhängende Erklärung bekommt 😃

    Kein Wunder, dass ich immer nur Bahnhof verstehe: Wenn sich hier im C++-Teil des Forums über "Vektoren" ausgelassen wird, ist also von std::vector die Rede (meist 😉 ).
    Tut mir leid wenn ich deswegen etwas stur gewesen bin, aber das wusste ich echt nicht. Ich versteh nur nicht, dass mir sowas nicht gleich mal einer erklärt. Wahrscheinlich liegt es daran, dass keiner weiß, was ich alles nicht weiß. 🤡

    Also: habe gelernt, hier (C++) ist Vektor == std::vector. Dankeschön. 🙂

    Und Danke, dass es Menschen wie euch gibt, die nicht die Nerven verlieren! 👍

    PS: Ich mache mir jetzt doch etwas Sorgen, was ich noch immer so Alles an Begriffen falsch verstehe und deshalb die geposteten Antworten auf meine Fragen nicht raffe. 😞



  • Leider gabs noch keine Antwort auf diese Frage, deswegen nochmal:

    Es hat sich ja nun ergeben, dass der Code läuft und die richtigen Zeichen in FrameBuff[] stehen. Frage: Warum werden weder im Debug-Inspektor noch in der Liste überwachter Ausdrücke die richtigen Zeichen angezeigt (bei echter Kommunikation und korrektem Ergebnis), wenn ich FrameBuff[] als private im Header deklariere? (Wenn ich FrameBuff[] global deklariere wirds in beiden richtig angezeigt.)
    Ist BCB3 einfach so schlecht?



  • Schwer zu sagen, woran es liegt. In meinem BCB 6 klappt das, egal wo ich FrameBuf deklariere... Ich kann mir aber ehrlich gesagt nicht vorstellen, dass das ein Fehler im BCB3 sein soll. Hattest Du die Vorschläge der anderen mal überprüft?

    [Edit] Vielleicht liegt es auch daran, dass ich meine HDD noch nie defragmentiert habe. 🤡



  • Joe_M. schrieb:

    [...] Hattest Du die Vorschläge der anderen mal überprüft?

    Welche Vorschläge meinst du konkret?



  • Die von akari und hey

    Vermutlich wird die Schleife nicht auf das Array der Klasse, sondern auf ein anderes (lokales?) angewendet. Aber das läßt sich nur mit der genauen Funktion sehen.

    this-> davor, vllt. hast du irgendwo noch ein FrameBuff?

    Zugageben, eigentlch ist es nur ein Vorschlag. Hattest Du FrameBuf mal aus der Liste der überwachten Ausdrücke rausgelöscht und neu hinzugefügt?



  • Zu akari's Vorschlag: Die Funktion habe ich ja gepostet.

    Zu hey's Vorschlag: habe ich getestet, brachte auch keine Besserung bei der Darstellung im Debug-Inspektor oder in der Liste überwachter Ausdrücke.

    zu Joe_M's Vorschlag: Auch habe ich FrameBuff mehrmals aus der Liste überwachter Ausdrücke entfernt und wieder neu eingefügt, ohne Änderung.

    Das Projekt ist insgesamt recht übersichtlich, daher schließe ich eine mehrmalige / ungewollte Nutzung / Deklaration von FrameBuff aus.
    Inzwischen habe ich nebenbei bemerkt, dass ich mir (nach Verlassen der Funktion in der FrameBuff gefüllt wird) FrameBuff doch anschauen kann (Debug-Insp. & List. überw. Ausdr.e). Warum das am Ende der betreffenden Funktion nicht geht, bleibt mir ein Rätsel. Wenn es jemanden interessiert oder Ideen vorhanden sind, kann ich das noch genauer untersuchen. Ansonsten lasse ich die Forscherei sein, da der Code ja sauber tut was er soll!



  • Ich hab den Thread hier nochmal rausgekramt... Ich habe gerade was interessantes zum Thema Vektor / Vector / eindimensionales Array / Feld gelesen.

    Man schaue sich im nachfolgenden Link den Codeschnipsel von sir_ment aus der BCB-Hilfe an - soviel zum Thema Vektoren: Link

    Edit: Vergesst es! Hab den Link wieder entfernt. Man sollte erst nen Kaffee trinken morgens und dann das Maul aufreissen! 🤡


Anmelden zum Antworten