File: mate-distance-stats.cpp

package info (click to toggle)
sra-sdk 3.0.3%2Bdfsg-6~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 165,852 kB
  • sloc: ansic: 374,775; cpp: 232,734; perl: 8,959; java: 6,253; sh: 6,032; python: 3,890; makefile: 1,046; yacc: 703; xml: 310; lex: 235
file content (23 lines) | stat: -rw-r--r-- 749 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "mate-distance-stats.hpp"
#include <vector>
#include <algorithm>

unsigned MateDistanceStats::NthMostFrequent(unsigned N, distance_t result[N]) const
{
    typedef std::vector<map_t::const_iterator> vector_t;
    unsigned const n = map.size() < N ? map.size() : N;
    vector_t v;
    
    v.reserve(map.size());
    for (map_t::const_iterator i = map.cbegin(); i != map.cend(); ++i) {
        v.push_back(i);
    }
    std::stable_sort(v.begin(), v.end(), compare_count_descending);
    std::sort(v.begin(), v.begin() + n, compare_distance); // unique key therefore regular sort is stable
    
    vector_t::const_iterator j = v.cbegin();
    for (unsigned i = 0; i != n; ++i, ++j) {
        result[i] = (*j)->first;
    }
    return n;
}