Grundsätzlich versuche ich, die Animation einer Anwendung aufzunehmen. Ich mache das mit einer Einzelbildaufnahme.Vergleichen von zwei Vektoren auf die effektivste Weise
Also was ich tue ist ich einen Frame (alle Metadaten der Animation) aufzeichnen und vergleichen Sie es mit dem vorherigen Rahmen. Wenn eines der Objekte nicht im vorherigen Frame ist, dann speichere ich sie und mache Sachen mit denen ich nicht will, dass ihr es wisst: P
Jetzt ist das Problem die Zeiteffizienz. Ich möchte diese Funktion innerhalb einer halben Sekunde erledigen können, weil sie nach einer halben Sekunde erneut aufgerufen werden muss. Die Größe der Frames wird um 1000-1500
erhalten.
Ich habe set_difference und andere Methoden überprüft und ich denke, das wird nicht genug für mich sein, weil ich zuerst Metadaten habe, die nicht sortiert werden können. Ich würde viele Änderungen vornehmen müssen und selbst wenn ich ein Sortierkriterium, das Sortieren von 2 Vektoren und dann vergleichen sie ist rechenintensiv.
Gerade jetzt das Beste, was ich mit kam, ist;
nur ein Beispiel nicht mein richtiger Code
auto itr1 = list1.begin();
auto itr2 = list2.begin();
for (i; i<total_items;i++)
{
if (*itr1 != *itr2)
do something
itr1++; itr2++;
}
}
Dies ist das beste, das ich mit kam und seiner Komplexität ist n. Jetzt funktioniert es, wenn beide Listen die gleiche Größe haben. Aber wenn die Größe der neuesten Liste steigt dann all Elemente aus, um beispielsweise bekommt
a a
b b
c c
d z
e d
f e
g f
Wie Sie sehen können, wenn ein neues Element in der zweiten Liste eingefügt wird, dann wird alle Elemente nach, dass aus der Ordnung sein. Ich finde keinen Weg, um dies zu umgehen, während ich die Rechenzeit so gering wie möglich halte. Jede Hilfe wird geschätzt.
dies nur für den vorhergehenden Rahmen ist, oder einem vorherigen Frame über einen gewissen Zeitraum? –
1) Bitte formatieren Sie Ihren Code mit Einrückung. 2) Weißt du, dass * z * eingefügt wurde, oder ist es eine Überraschung? Wenn es eine Überraschung ist, ist es nur ein Element eingefügt, oder viele? Sind sie alle an einer Stelle oder bestreut? All diese Dinge beeinflussen, wie man es macht. –
nur der vorherige Rahmen. –