c – 我如何对列表进行排序并获得前K个元素? (STL)

前端之家收集整理的这篇文章主要介绍了c – 我如何对列表进行排序并获得前K个元素? (STL)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个双打矢量.我想从最高到最低排序,并获得前K个元素的索引. std :: sort只是就地排序,并没有返回我认为的索引.什么是获得最大元素的前K个指数的快速方法

解决方法

首先想到的是有点hackish,但你可以定义一个存储double和它的原始索引的结构,然后重载<运算符基于double进行排序:
struct s {
    double d;
    int index;
    bool operator < (const struct &s) const {
        return d < s.d;
    }
};

然后你可以从结构中检索原始索引.

富勒的例子:

vector<double> orig;
vector<s> v;
...
for (int i=0; i < orig.size(); ++i) {
    s s_temp;
    s_temp.d = orig[i];
    s_temp.index = i;
    v.push_back(s);
}
sort(v.begin(),v.end());
//now just retrieve v[i].index

这将使它们从最小到最大排序,但你可以重载>运算符,然后如果需要,然后传入更大的sort函数.

猜你在找的C&C++相关文章