基本的に私はアプリケーションのアニメーションを記録しようとしています。私はフレームごとの録音でこれをやっています。最も効果的な方法で2つのベクトルを比較する
私は、フレーム(アニメーションのすべてのメタデータ)を記録し、前のフレームと比較します。オブジェクトのいずれかが前のフレームにない場合は、それらを保存して、あなたに知りたくないものを入れます:P
問題は時間効率です。私は半秒後にもう一度呼び出さなければならないので、半分の時間内にこの機能を完了できるようにしたい。フレームのサイズは1000-1500
になります。
私はset_differenceと他の方法をチェックしました。私は十分なものではないと思います。まず、並べ替えができないメタデータがあります。ソート基準を含めても、多くの変更が必要です。 2つのベクトルをソートし、それらを比較することは計算上高価である。
今私が思いついたのは最高です。
一例に過ぎない私の実際のコード
auto itr1 = list1.begin();
auto itr2 = list2.begin();
for (i; i<total_items;i++)
{
if (*itr1 != *itr2)
do something
itr1++; itr2++;
}
}
これは私が思いついた最高のであり、その複雑さはnです。両方のリストが同じサイズであれば動作するようになりました。あなたは新しい要素が第二のリストに挿入されます場合は、その後のすべての要素が順序外となります見ることができるようにしかし、最新のリストのサイズが大きくなる場合は、すべての要素は、例えば順不同で
a a
b b
c c
d z
e d
f e
g f
を取得します。計算時間をできるだけ少なくしながら、これを回避する方法を見つけることはできないようです。 助けていただければ幸いです。
は、前のフレーム、またはいくつかのタイムスパンの上に任意の前のフレームについては、この唯一のですか? –
1)あなたのコードをインデントでフォーマットしてください。 2)* z *が挿入されていることを知っていますか、それとも驚きですか?それが驚きの場合、挿入されたアイテムは1つだけですか、それとも多くのアイテムですか?彼らは一箇所にいるのか、周りに振りかざされていますか?これらのことはすべて、それを行う方法に影響します。 –
直前のフレーム。 –