在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中文網其他相關文章!