私はJavaからC++に入ってきており、標準的なものから要素(非プリミティブ)を持っている標準的な設計状況を持っています。C++のstd :: vectorのArrayListスタイルのindexOf?
Javaの場合、次のように記述します。 arrayList.remove(arrayList.indexOf(myClassInstance));
、std :: vectorを使って、これを実行するには最高のパフォーマンス/最もクリーンな方法はありますか?
私が考えることができる最も良いことは、私が探しているインスタンスへの参照を作成し、その参照を見つけるまでベクトルを反復処理することです。本質的には、ベクトルの各要素のメモリアドレスを参照と比較して一致するまで比較します。
私は適切なトラックにいますか?またはこれを行うためのよりよい方法がありますか? (おそらく、別の標準コンテナを使用して、私は今までのところstd :: vectorのみを使用しています)
を使用すると、ポインタまたはshared_ptrののコレクションを持っていると仮定するとは、STD ::セットはあなたのためにうまく機能することがありポインタアドレスを比較するだけです。探しているアイテムのアドレスが分かっていればmySetだけです。消去(ptr); – CashCow
@CashCow - std :: vectorとstd:vectorのすべてのメンバーに対して、繰り返しのパフォーマンス上の違いがありますか?私のコードの他の場所では、私はセット内の各要素について、すべてのサイクルでメソッドを呼び出しています。 – ericsoco