遵循C++排序并跟踪索引:这就是如何获得vector<int> v
的argsort
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
类型更改为doubles,但我认为我不应该这样做,因为它们都指向索引。所以我不知道如何改变函数来得到我想要的。
您只需要在函数的参数中将vector<int>
更改为vector<float>
。
vector<int> VectorArgSort(vector<float> &v) {
请参阅此处的工作版本