ホームページ >バックエンド開発 >C++ >元のインデックスを追跡しながら C でデータを並べ替えるにはどうすればよいですか?

元のインデックスを追跡しながら C でデータを並べ替えるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-03 12:54:40170ブラウズ

How Can I Sort Data in C   While Tracking Original Indices?

C でのインデックス追跡による並べ替え

元のインデックスを保持しながらデータを並べ替えるのは、データ分析と操作における一般的なタスクです。 C でこれを実現するには、いくつかの思慮深いプログラミング手法が必要です。

元のインデックスを追跡しながらサンプルのシーケンスを昇順に並べ替えるには、ラムダ式と標準ライブラリを利用できます。以下の sort_indexes 関数は、このアプローチを示しています。

template <typename T>
vector<size_t> sort_indexes(const vector<T> &v) {
  // Initialize original index locations
  vector<size_t> idx(v.size());
  iota(idx.begin(), idx.end(), 0);

  // Sort indexes based on values in v using std::stable_sort to maintain original order for equal values
  stable_sort(idx.begin(), idx.end(),
    [&v](size_t i1, size_t i2) { return v[i1] < v[i2]; });

  return idx;
}

この関数は、後続の反復で使用できるインデックス ベクトルを返します。

for (auto i : sort_indexes(v)) {
  cout << v[i] << endl;
}

並べ替え関数を提供するようにカスタマイズできます。コンパレータ、または sort_indexes 関数内の元のベクトルの自動並べ替え。

以上が元のインデックスを追跡しながら C でデータを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。