2016-09-22 8 views
0

私は、C++で一連のパスを保持するベクトルを作成しようとしています。私は後でそれらを適切に削除する方法でそれらを追加する方法を理解するのが難しいです。頻繁に変化するベクトルをC++でどのように管理できますか?

私は、見つけた各輪郭のパスを返す輪郭検出器を持っています。それは新しい輪郭を見つけ続けるが、3つの等高線が見つかると言う。返される各パスに対して3つの余分なオフセットパスを作成して変更したいので、私のベクトルは9要素のサイズになります。

「ルート」パスが消えると、パスとオフセットをベクターに追加してから、パスとオフセットを削除するにはどうすればよいですか?オンザフライでオフセットの数を変更するとどうなりますか?

一つは、私は、多次元ベクトル

vector< vector<ofPolyline> > 

これを作成することでしたと思った、私は、想像する私は私の輪郭トラッカーから返された各パスを描く聞かせて、その中に、私はそれのすべてを保存オフセット関連していますパス。しかし、これは間違っていますか?

+0

問題を簡潔に表現する優雅なコードを記述してください。それが遅すぎる場合は、ここまたはcodereviewで助言を求めることができます。ベクタの解決策を提案し、それがどのようにパンアウトするかを確認してください。 –

+0

あなたがディレクトリパスについて話しているなら、何らかの種類のツリー構造が削除の方が良いかもしれません。パスの数が少ない場合は、誰が気にします。 (またはあなたはグラフについて話していますか?) –

+0

パスはどのようにすることができますか?パスごとにいくつのオフセットがありますか?これらのそれぞれの挿入と削除はどのくらいの頻度で行われますか? –

答えて

0

ハッシュテーブルのデータ構造は、その専門で見上げる/

O(1)検索..あなたのために良いスーツ。 あなたが簡単にインターネットでその実装を見つけることができます

ここでは一例 http://pumpkinprogrammer.com/2014/06/21/c-tutorial-intro-to-hash-tables/

あなたはマルチマップやunordered_multimapのようなSTLコンテナを使用することができますです(C++ 11以降)。