2#ifndef __MED_GEN_UTILS_IMP_H__
3#define __MED_GEN_UTILS_IMP_H__
6template <
class T>
void get_zero_inds(T *v,
int len, vector<int> &inds)
9 for (
int i=0; i<len; i++)
15template <
class T>
void get_nonzero_inds(T *v,
int len, vector<int> &inds)
18 for (
int i=0; i<len; i++)
24template <
class T>
void get_vec_from_vecvec(vector<vector<T>> &v_in, vector<T> &v_out)
28 for (
int i=0; i<v_in.size(); i++)
29 for (
int j=0; j<v_in[i].size(); j++)
30 v_out.push_back(v_in[i][j]);
35template <
class T>
int get_vec_ndiff_vals(vector<T> &v)
38 if (v.size() == 0)
return 0;
42 for (
int i=0; i<v.size(); i++) {
43 if (m.find(v[i]) == m.end())
47 return ((
int)m.size());
54template <
typename T>
int find_sorted_vec_in_sorted_vec(
const vector<T> &search,
const vector<T> &in, vector<size_t>& indices) {
63 indices.resize(search.size());
68 int search_start = (int)(search.size());
72 for (
int j = 0; j < search.size(); ++j) {
73 if (search[j] < in[0]) {
82 for (
int j = (
int)(search.size()) - 1; j >= search_start; --j) {
83 if (search[j] >= in.back()) {
84 indices[j] = in.size();
94 if (search_start > search_end)
99 for (
int j = search_start; j <= search_end; ++j) {
102 int end = (int)(in.size()) - 1;
107 if (start >= end - 1) {
109 indices[j] = (size_t)end;
113 int mid = (start + end) / 2;
130template<
typename T>
int sequence(T start, T finish, T step, vector<T>& seq,
bool isForward) {
136 seq.reserve(1 + (
size_t)((finish - start) / step));
141 while (cur <= finish) {
149 while (cur >= start) {
154 reverse(seq.begin(), seq.end());
165 bool operator()(
const pair<S, T>& left,
const pair<S, T>& right) {
166 return (left.second < right.second);
171 bool operator()(
const pair<S, T>& left,
const pair<S, T>& right) {
172 return (left.first < right.first);
Definition MedGenUtils_imp.h:170
Definition MedGenUtils_imp.h:164