URL: https://www.overclockers.at/coding-stuff/datenstruktur-gesucht-zummenhngede-vars_239374/page_1 - zur Vollversion wechseln!
Ich bin derzeit nur auf mühsam Lösungen bzw. workarounds gestoßen, aber wie mach ich am einfachsten in c, notfalls auch c++ (eigentlich egal) sowas ähnliches wie multimaps.
was ich brauch: ich hab mehrere iterationen und bei jedem durchgang wird der aktuelle wert (sind viele) als historie hinterlegt. auf die historiewerte soll zugegriffen werden können sowie wenn ich eine historie lösche (egal welche, wird aber meist entweder die älteteste oder neuste sein) dann sollen alle anderen auch mitgelöscht werden. die zuordnung zwischen den historischen daten und aktuellen daten muss erhalten bleiben.
z.b. suchen in den daten is eigentlich nicht wichtig ... gibts da irgendwas gschicktes ootb ohne zusätzliches zeug wie boost o.ä verwenden zu müssen?
danke!
Ich hab deine Beschreibung jetzt dreimal gelesen, verstehe aber noch immer nicht was du meinst.
Du hast "Iterationen", und "Durchgänge" (oder ist das eine Iteration?) - und der aktuelle Wert sind viele? Und wenn du eine Historie löschst, dann sollen alle anderen gelöscht werden, aber irgendeine Zuordnung zwischen den gelöschten Daten muss erhalten bleiben?
ich hab auch keinen schimmer was der plan ist
Zitat von d3cod3was der plan ist
ok, habs mir eh gedacht, dass das nicht gut erklärt is ^^
bissl ausführlicher bzw. hintergrund. ich bearbeite bilder bzw. frames von nem video. dabei werden punkte erkannt und getrackt. von frame zu frame. d.h. ich hab derzeit ein vector mit den vorigen punkten und mit den aktuellen. die gehören zusammen, sind aber derzeit nicht speziell verknüpft. dann hab ich mehrere filterstufen wo diverse punkte entfernt werden und auch funktionen wo neue hinzukommen.
was ich jetzt will ist, dass eine historie hab wo ich ich sag mal bis 5 frames vorher abfragen und sagen kann, das der aktuelle punkt 200 mit punkt 100, 150, 189 und 133 aus stmmt bzw. verknüpft ist. weiters wirds erst ab hausnummer den 5 getrackten punkten relevant. d.h. ich muss auch abfragen können ob der aktuelle punkt jetzt bereits 1 2 3 oder 4 vorgänger hat. wenn <5 nicht relevant. wenn ich jetzt 1 punkt beim tracking verlier bzw. rausfilter sollen natürlich auch alle vorgänger gelöscht werden.
die schwierigkeit die ich dabei hab is eigentlich das immer wieder neue punkte dazu oder auch wegkommen und ich daher nicht so 100% weiß wie ich das am besten abspeicher um möglichst einfach darauf zuzugreifen. vorallem auch das ich weiß welche punkte mit welchen zusammengehören. ich würd halt ungern selbst ids verwalten müssen, das sollte nach möglich auch automatisch erfolgen.
ich hoffe das is jetzt etwas klarer?
würde ich wie eine bouble-linked-list aufbaun, nur 2-dimensional
hast dann allso deine daten des punktes (koordinaten, farbe, wasweisich) und 4 pointer auf nachbar-elemente
ein pointer-paar um die punkte innerhalb eines frames zu durchlaufen, das andere für die history
Hört sich so an, dass du eine List braucht. Weiß jetzt nicht mehr wie es in C ist, aber zB in C++ und C# durchaus kein Problem.
Push: die Daten einspielen in die Liste (somit der Zusammenhang)
Pull: halt raus(löschen)
Und musst halt dann auch auf die Datensätze zugreifen.
In C durch Pointer zB
der einfachheit halber würd ich da auch einfach listen herumschupfen. ob das jetzt der beste weg ist von der performance her kann ich aber spontan nicht sagen.
Vom Performance her eigentlich nicht, aber einfach.
Glaub kaum, dass er sichs zu kompliziert machen will.
Zitat von pinkeyich hoffe das is jetzt etwas klarer?
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025