我有两个大小相同的向量
vector<float> predictions; //say {1.22, 3.22, 2.22, 4.22}
vector<int> indices; //say {0, 1, 2, 3}
我使用以下顺序对预测中的值进行了排序
std::sort(predictions.rbegin(), predictions.rend()); //gives {4.22, 3.22, 2.22, 1.22}
现在,我想同时对索引和预测进行排序。
//to get {3, 1, 2, 0}
在不使用Boost和自定义模板的情况下该如何做?
您可以将这两个向量合并为一个类型为like的向量,std::vector<std::pair<int, float>>
然后对其进行排序。比较功能可以像这样:
bool compareFunc(std::pair<int, float> &a, std::pair<int, float> &b)
{
return a.second > b.second;
}
然后像这样对合并的数据进行排序:
std::sort(data.begin(), data.end(), compareFunc);
之后,您可以获取排序的部分,即其第一个组件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句