「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 組み込み関数またはカスタム メソッドを使用して C++ で 2D 配列を並べ替えるにはどうすればよいですか?

組み込み関数またはカスタム メソッドを使用して C++ で 2D 配列を並べ替えるにはどうすればよいですか?

2024 年 11 月 20 日に公開
ブラウズ:634

How do I sort a 2D array in C   using built-in functions or custom methods?

組み込み関数または代替メソッドを使用した C での 2D 配列のソート

C での 2D 配列のソートには、次のような独特の課題があります。 std::sort() などの組み込み関数は通常、1D 配列用に設計されています。ただし、最初の列の値のみを比較するなど、特定の条件に基づいて 2D 配列を並べ替えたい場合があります。

std::qsort の使用

C には複数列の並べ替えのための直接の組み込み関数がありませんが、 std::qsort() は多用途のソリューションを提供します。この関数は、配列へのポインター、配列のサイズ、配列内の要素のサイズ、および比較関数を受け取ります。カスタム比較関数を提供すると、特定の配列要素に基づいて並べ替え基準を指定できます。

カスタム並べ替え用の比較関数

比較関数は整数の結果を返す必要があります。 2 つの配列要素の比較に基づきます。 2D 配列の場合は、ポインター演算を使用して個々の要素にアクセスする必要があります。次の例を考えてみましょう。

int qsort_compare(const void *arg1, const void *arg2) {
  int const *lhs = static_cast(arg1);
  int const *rhs = static_cast(arg2);
  return (lhs[0] 

この比較関数は、最初の要素 (最初の列の値に相当) を比較し、結果に基づいて適切な順序を返します。

実装例

std::qsort() とカスタム比較関数を組み合わせると、C で 2D 配列を次のように並べ替えることができます。以下:

#include 
#include 

using namespace std;

int main() {
  int ar[5][2] = {
    {20, 11},
    {10, 20},
    {39, 14},
    {29, 15},
    {22, 23}
  };

  qsort(ar, 5, sizeof(*ar), qsort_compare);

  cout 

出力:

Sorted 2D Array:
10 20
20 11
22 23
29 15
39 14

このメソッドは、カスタム比較関数の作成と使用が必要ですが、C で 2D 配列をソートするための包括的かつ効率的なソリューションを提供します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3