C でベクトルを降順に並べ替える方法: カスタム コンパレータと逆反復子?

DDD
リリース: 2024-11-03 16:21:02
オリジナル
737 人が閲覧しました

How to Sort a Vector in Descending Order in C  : Custom Comparators vs. Reverse Iterators?

降順での効率的なベクトルのソート

ベクトルを降順でソートするタスクに直面した場合、C プログラマには 2 つの主要なオプションがあります。カスタム コンパレータを備えた std::sort 関数を利用するか、その rbegin() および rend() メソッドによって提供される逆反復子を利用することを検討してください。この記事では、各アプローチの長所と短所を分析します。

アプローチ 1: カスタム コンパレーターの使用

std::sort 関数を使用すると、カスタム比較関数を指定できます。要素の順序を決定します。降順の場合は、std::greater コンパレータを使用できます。この方法は、追加のメモリ割り当てやコピー操作を必要とせずに元のベクトルで動作するため、単純かつ効率的です。

コード:

<code class="cpp">std::sort(numbers.begin(), numbers.end(), std::greater<int>());</code>
ログイン後にコピー

アプローチ 2 : 逆反復子の使用

std::sort 関数は、コンテナーの逆ビューを提供する逆反復子とともに使用することもできます。これらの反復子を使用して逆順にソートすると、ベクトルは効果的に降順にソートされます。このアプローチではカスタム コンパレーターの必要性が回避されますが、ベクトルの一時的な反転ビューが作成されるため、パフォーマンスに影響が出る可能性があります。

コード:

<code class="cpp">std::sort(numbers.rbegin(), numbers.rend());</code>
ログイン後にコピー

考慮事項:

  • 効率: カスタム コンパレータのアプローチ (アプローチ 1) は、中間コピーや反転ビューを使用せずにベクトルを直接操作するため、一般に効率的です。 .
  • 利便性: 逆反復子アプローチ (アプローチ 2) は、特殊なコンパレーターを使用する必要がないため、構文的にはより簡単です。
  • C バージョン: 逆反復子アプローチは C 14 以降で利用可能ですが、直接比較子アプローチは以前の C バージョンから利用可能です。

結論:

C では、カスタム コンパレータ メソッドとリバース イテレータ メソッドのどちらも効果的にベクトルを降順に並べ替えることができます。どちらを選択するかは、効率と利便性の間の望ましいバランスによって決まります。最適なパフォーマンスを得るには、カスタム コンパレータのアプローチをお勧めします。ただし、単純さが優先される場合は、逆反復子のアプローチが実行可能な代替手段になる可能性があります。

以上がC でベクトルを降順に並べ替える方法: カスタム コンパレータと逆反復子?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!