首頁 >後端開發 >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 中,要實現這一點需要一些深思熟慮的程式設計技術。

要按升序對樣本序列進行排序,同時追蹤其原始索引,可以利用 lambda 表達式和標準函式庫。下面的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn