Я написал программу, которая генерирует 100 точек в n-мерном пространстве и вычисляет центроид (геометрический центр).Это работает хорошо, но мне нужно написать эту часть, не используя цикл for, только используя накопители, for_each и арифметические функторы.
int dimensions = 2;
int number_of_points = 100;
vector<vector<double>> cloud_A(number_of_points, vector<double>(dimensions, 0));
for_each(cloud_A.begin(), cloud_A.end(), RandomGenerator(5, 10));
vector<double> centroid_A(dimensions, 0);
for (int i = 0; i < dimensions; i++){
centroid_A[i] = accumulate(cloud_A.begin(), cloud_A.end(), 0.0, Sum(i));
}
for_each(centroid_A.begin(), centroid_A.end(), Divide(number_of_points));
Я застрял на несколько часов, задаваясь вопросом, возможно ли это, моя ближайшая ставка была бы, если cloud_A.begin()[count]
будет работать:
int count = 0;
for_each(centroid_A.begin(), centroid_A.end(), [&](double d){
for_each(cloud_A.begin()[count], cloud_A.end()[count], [&](double punkt) {
centroid_A[count]=accumulate(punkt.begin(), punkt.end(), 0.0, plus<double>()) << endl;
});
count++;
});