根据gc值对整个struct数组进行排序

时间:2015-11-21 03:54:43

标签: c++ arrays struct

如何从最低到最高基于double gc对整个结构及其所有元素进行排序?

我不知道从哪里开始,并且已经挣扎了几个小时。

struct DNA
{
    vector <string>header;
    string DNAstrand;
    double gc;
    int valid; // 0 not valid | 1 valid
};
struct World
{
    //  int     numCountries;
    DNA dnas[MAX_DNA_SIZE];
} myWorld;

基本上我的目标是使用gc从最低到最高来安排所有元素同步,所以如果我拉myWorld.dnas[2].valid左右,它会在排序后与其gc相关联。

2 个答案:

答案 0 :(得分:2)

对于C ++ 11和std::sort来说,这很容易:

std::sort(std::begin(myWorld.dnas), std::end(myWorld.dnas), [](const DNA& dna1, const DNA& dna2) { return dna1.gc < dna2.gc; });

答案 1 :(得分:1)

由于您似乎没有C ++ 11,因此您可以尝试以下操作:

#include <algorithm>

int main()
{
    struct
    {
        bool operator()( DNA const& a, DNA const& b )
        {
            return a.gc < b.gc;
        }
    } dna_comparer;

    std::sort( myWorld.dnas, myWorld.dnas + MAX_DNA_SIZE, dna_comparer );
}