首页 > 解决方案 > c ++找到向量的argsort

问题描述

遵循C++ 排序和跟踪索引:这是如何argsort获取vector<int> v

vector<int> VectorArgSort(vector<int> &v) {
    /* Get the indices that gives a sorted vector v*/

    vector<int> retIndices(v.size());
    iota(retIndices.begin(), retIndices.end(), 0);

    stable_sort(
        retIndices.begin(), retIndices.end(),
        [&v](int i1, int i2) {return v[i1] < v[i2];});

    return retIndices;
}

但我想要的是vector<int> VectorArgSort(vector<float> &v)仍然给出向量,因为它们是索引,而是执行它vector<float> &v

我尝试将几种定义的int类型更改为双精度类型,但我认为我不应该这样做,因为它们都指向索引。所以我不知道如何改变函数来得到我想要的。

标签: c++sortingindices

解决方案


您只需将函数的参数中的 to 更改vector<int>vector<float>

vector<int> VectorArgSort(vector<float> &v) {

在此处查看工作版本


推荐阅读