в качестве альтернативного решения вы можете попробовать Arrayfire
библиотека. У него есть специальные функции для решения таких проблем:
float keys[] = {51,51,72,72,72,103,103,504,504,504};
int N = sizeof(keys) / sizeof(int);
array input(N, 1, keys);
array values, pidx, locations;
// unique elements in a vector and their indicies
setunique(values, pidx, locations, input);
// # of unique elements
int n_unique = pidx.elements();
array pnum = zeros(n_unique); // empty array
gfor(array i, n_unique) // parallel for loop
// count the # of occurrences for each key
pnum(i) = sum(locations == i);
print(pidx);
print(pnum);
вывод:
pidx =
0,0000
2,0000
5,0000
7,0000
pnum =
2,0000
3,0000
2,0000
3.0000