首頁 > 後端開發 > C++ > 如何根據一個向量的值對另一個向量進行排序?

如何根據一個向量的值對另一個向量進行排序?

Barbara Streisand
發布: 2024-12-29 04:14:12
原創
819 人瀏覽過

How to Sort One Vector Based on the Values of Another Vector?

按不同向量中的值對向量進行排序

考慮這樣的場景:您有多個長度相等的向量,並且旨在對一個向量進行排序基於來自不同向量的值。例如,您可能有一個整數向量 Index 和一個字串向量 Values。對 Index 向量進行排序後,應相應地對 Values 向量中的元素進行重新排序。

一個有效的方法是建立一個向量,將 中的元素配對Index 向量及其對應的索引。然後可以使用自訂排序函數對這個向量 order 進行排序,該函數比較 Index 向量中的元素。排序後的 order 向量擷取所需的排序順序。

使用此排序順序,您可以對其他向量重新排序。考慮以下程式碼片段:

typedef vector<int>::const_iterator myiter;

vector<pair<size_t, myiter>> order(Index.size());

size_t n = 0;
for (myiter it = Index.begin(); it != Index.end(); ++it, ++n)
    order[n] = make_pair(n, it);

sort(order.begin(), order.end(), ordering());
登入後複製

ordering 函數依據 Index 向量中的值對 order 向量進行排序。然後,您可以使用order 向量對Values 向量重新排序,程式碼如下:

template <typename T>
vector<T> sort_from_ref(
    vector<T> const& in,
    vector<pair<size_t, myiter>> const& reference
) {
    vector<T> ret(in.size());

    size_t const size = in.size();
    for (size_t i = 0; i < size; ++i)
        ret[i] = in[reference[i].first];

    return ret;
}
登入後複製

此方法可讓您按以下值對一個向量進行排序:另一個向量並對其他向量應用相同的排序。

以上是如何根據一個向量的值對另一個向量進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板