SuJ*_*Jit 5 c++ sorting vector
我有两个相同大小的矢量
vector<float> predictions; //say {1.22, 3.22, 2.22, 4.22}
vector<int> indices; //say {0, 1, 2, 3}
Run Code Online (Sandbox Code Playgroud)
我使用降序按降序对预测中的值进行排序
std::sort(predictions.rbegin(), predictions.rend()); //gives {4.22, 3.22, 2.22, 1.22}
Run Code Online (Sandbox Code Playgroud)
现在我想要与预测同时对索引进行排序.
//to get {3, 1, 2, 0}
Run Code Online (Sandbox Code Playgroud)
如何在不使用boost和模板的情况下执行此操作?
您可以将这两个向量组合成一个类似的类型,std::vector<std::pair<int, float>>然后对其进行排序.比较功能可以是这样的:
bool compareFunc(std::pair<int, float> &a, std::pair<int, float> &b)
{
return a.second > b.second;
}
Run Code Online (Sandbox Code Playgroud)
并对这些组合数据进行排序:
std::sort(data.begin(), data.end(), compareFunc);
Run Code Online (Sandbox Code Playgroud)
在此之后,您可以获得已排序的部分,即其第一个组件.