Я хочу сгруппировать данные в пределах диапазона, но не могу придумать подходящий способ сделать это.
std::map<int, std::vector<int>> master_map,sub_map;
int range = 5;
std::vector<int> res;
//Say master_map has data like :
//{{10,[10,21]},{11,[30,33]}}
//and sub_map has data like :
//{{4,[29,30]},{6,[1,2]}}
Алгоритм должен сравнивать каждое значение данных master_map со значением данных sub_map. При сравнении следует добавить все значения в векторе. Если разница меньше диапазона, то она считается равной единице. Когда он больше, чем диапазон, он считается за единицу. Поэтому в этом случае выходные данные res будут выглядеть примерно так: [1,2,3], поскольку master_map {11, [30,33]} и sub_map {4, [29,30]} находятся в пределах диапазона.
int cnt = 0;
for(auto const& m : master_map){
for(auto const& s : sub_map){
if(range > (m.second[0]+m.second[1]-s.second[0]+s.second[1])){
res.push_back(cnt);
cnt += 1;
} else {
res.push_back(cnt);
cnt += 1;
}
}
}
Эти выходные данные соответствуют [1,2,3,4], как я могу изменить это для удовлетворения моих потребностей?