重複の効率的な削除とベクトルの並べ替え
重複の可能性のある大きなベクトルを処理する場合、重複を削除する効率的なアプローチを見つけることが重要です。ベクトルを複製して並べ替えます。この記事では、この目標を達成するための最も効果的な手法について説明します。
ベクトル操作の使用
オプションの 1 つは、ベクトルに対してソート操作と一意の操作を組み合わせて使用することです。ただし、この方法は、重複を削除する前にベクトル全体をソートする必要があるため、非効率であることが判明する可能性があります。
vec.erase( std::unique(vec.begin(), vec.end()), vec.end()); std::sort(vec.begin(), vec.end());
セットへの変換
別のアプローチは次のとおりです。コンストラクターを使用するか、要素を手動で挿入して、ベクトルをセットに変換します。セットは重複を自動的に排除し、並べ替えられた反復を提供します。変換後、データをベクトルにコピーして戻すことができます。
手動セット変換
set<int> s; unsigned size = vec.size(); for( unsigned i = 0; i < size; ++i ) s.insert( vec[i] ); vec.assign( s.begin(), s.end() );
セット コンストラクター変換
set<int> s( vec.begin(), vec.end() ); vec.assign( s.begin(), s.end() );
パフォーマンス比較
重複の数が多い場合は、セットに変換してデータをベクトルにダンプして戻す方が高速なオプションになります。セットへの手動変換も、セット コンストラクターを使用するよりもわずかに速いようです。
Optimal Sequence
最適なパフォーマンスを得るには、削除する前にベクトルをソートしないことをお勧めします。重複します。セットに変換してからデータを転送することで、両方のタスクを効率的に完了できます。
以上がC で効率的に重複を削除し、ベクトルを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。