ホームページ > バックエンド開発 > C++ > C で効率的に重複を削除し、ベクトルを並べ替えるにはどうすればよいですか?

C で効率的に重複を削除し、ベクトルを並べ替えるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-21 19:42:23
オリジナル
521 人が閲覧しました

How Can I Efficiently Remove Duplicates and Sort a Vector in C  ?

重複の効率的な削除とベクトルの並べ替え

重複の可能性のある大きなベクトルを処理する場合、重複を削除する効率的なアプローチを見つけることが重要です。ベクトルを複製して並べ替えます。この記事では、この目標を達成するための最も効果的な手法について説明します。

ベクトル操作の使用

オプションの 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート