mehrere CArray und Zugriff



  • Hi,
    Ich habe folgendes "Problem":

    Ich habe 2 CArray's. In beiden ist jeweils eine Eindeutige ID gespeichert, und in einem eine ZUgriffs ID auf das andere Array mit dem ich weiß, welches Element von Array A ich brauche. Nun Könnte ich das ja direkt mit A.GetAt(B.zugriffsID)
    ansprechen. Das geht ja aber nur so lange, wie ich nichts aus A lösche, da sonst die ID nicht mehr passt. Also müsste ich A durchgehen und B.ZugriffsID mit A.ID
    vergleichen. Auf die Dauer ist das aber leicht umständlich.

    Ich habe mir gedacht, ich erstelle eine Klasse CMyArray und erweitere einfach jeden Eintrag um eine ID, und frage das dann in GetAt() ab. Ist zwar auch etwas zeitaufwendig, aber wenigstens muss ich das nicht immer im Hauptprogramm machen.

    Wie löst ihr sowas? Mir fällt momentan nichts besseres ein, deswegen bin ich für Vorschläge offen _

    Dannke im voraus



  • was genau willst du denn erreichen ? beschreib doch mal genauer was du mit der ganzen funktion erreichen willst



  • hallo,

    du kannst nicht aus einem element ein feld entfernen wenn noch aus einem
    anderen element ein zugriff hierdrauf erfolgen kann. das bedeutet also
    das diese beiden elemente von einander abhängig sind ...

    also folgendes: array a hat ganz viele einträge und array b zeigt auf die
    elemente von b, wenn ich dann von array a ein feld lösche dann MUSS dieser
    eintrag auch in b vorgenommen werden.

    wenn ich persönlich durche einen umzug eine neue adresse bekomme,
    so muss ich auch persönlich einige ämter durchlaufen und meine neue
    adresse mitteilen 😉



  • Jaipur schrieb:

    wenn ich persönlich durche einen umzug eine neue adresse bekomme,
    so muss ich auch persönlich einige ämter durchlaufen und meine neue
    adresse mitteilen 😉

    Un wenn nicht, kommt es früher oder später bestimmt zu einem bürokraten-"absturz" 😃



  • Ok, das nicht mehr gültige Verweise gelöscht werden müssen ist klar. Es ging mir dabei auch mehr darum, was mit den Elementen darüber passiert. Die behalten im Endeffekt ja die gleiche ID, "rutschen" aber im Array eine "Nummer" weiter nach unten. Wenn ich das änder müsste ich ja das array durchgehen und jede ID um eins kleiner machen. (komisch ausgedrückt, aber ich hoffe verständlich _)
    Ich versuch mal ein Beispiel:

    A[0].ID = 0;
    A[1].ID = 1;
    A[2].ID = 2;
    int ZugriffID = 1;
    

    jetzt könnte ich ja auf Das Element in dem Array mit der ID 1 ja einfach mit
    A[ZUgriffsID] zugreifen. Wenn ich jetzt aber A[0] lösche, sieht es ja wie folgt aus:

    A[0].ID = 1;
    A[1].ID = 2;
    

    Wenn ich jetzt auf das Element mit der ID 1 zugreifen will, muss ich ja nicht auf A[1] sondern auf A[0] zugreifen. Meine Lösung war halt, erst A durchzulaufen, und die passende ID zu suchen, und dann hat man ja den realen Index.

    Hoffe das war etwas verständlicher Oo (Hier ist es warm, da kann man nicht so gut denken 🙂 )



  • A[0].ID = 0;
    A[1].ID = 1;
    A[2].ID = 2;
    int ZugriffID = 1;
    
    ZugriffID = 1 --> A.[1] = 1
    
    A[0].ID = 0;
    A[1].ID = 2
    int ZugriffID = 1;
    

    und zu deiner frage: ja, dann müsstest du auch die id's einen höher bzw tiefer setzen.
    dieses erfordert also immer wieder neuen aufwand beim löschen!

    und auch beim irgendwo wieder einsetzen, also wenn du jetzt im array etwas
    zwischen id 1 und id 2 zwischeneinfügen möchtest, das ist der nachteil bei arrays.
    aber dafür erfolgt der zugriff umso schneller, also direkt!

    ich weiß jetzt auch nicht was du genau vor hast mit deinem array
    und ich weiß auch nicht wie weit du mit der sprache c/c++ bist,
    denn ansonsten würde ich listen vorschlagen...

    ...es kommt immer darauf an was genau mit den daten gemacht werden muss.



  • meinst du mit Listen verkettete listen? Also eine Klasse die Zeiger auf die Datenklasse verwalteten und dann halt immer mit new und delete und so? Welchen vorteil hat das? (Soll sich jetzt nicht wie "Ich seh da keinen Sinn drin" sonder mehr wie "Ich würd gern den UNterschied wissen" anhören _)

    Ich denke ich werde die IDs neu schreiben, weil nur selten gelöscht wird, und immer ans Ende des Array geschrieben.



  • weil nur selten gelöscht wird, und immer ans Ende des Array geschrieben.

    ja, genau dann würde ich arrays vorschlagen und wenn du oft löschen musst,
    egal an welcher stelle, oder oft einfügen müsst, egal an welcher stelle, dann
    würde ich listen vorschlagen ...kommt halt immer darauf an was man mit der
    "liste" vor hat.

    gibt ja auch noch viel mehr, bäume, hash tabellen ...aber das soll wohl in diesem
    fall erst mal egal sein!

    aber so ganz pauschal kann man das nicht sagen welche art der verwaltung
    genommen werden soll, wie gesagt: ist immer von der art und weise der zugriffe
    abhängig, also das was mit den daten passieren soll


Anmelden zum Antworten