gpt4 book ai didi

c++ - 在 for 循环中总结距离

转载 作者:行者123 更新时间:2023-11-28 05:04:52 25 4
gpt4 key购买 nike

我有一个点 vector ,我计算每个点之间的距离(P1P2、P1P3、P1P4、....P1PN、P2P1、...、PMPN)。
现在我想将点 1 到所有其他点的所有距离相加,然后将点 2 到所有其他点的所有距离相加,依此类推(P1P2+P1P3+...+P1PN,P2P1+P2P2+...+P2PN)将这些距离放入一个 vector 中。我现在陷入了 for 循环:

这是我的代码:

    // Calculate mass centers
vector<Point2f> centroids_1;

// Calculate distances between all mass centers
vector<double> distance_vector;


for (int i = 0, iend = centroids_1.size(); i < iend; i++) {
for (int j = 0, jend = centroids_1.size(); j < jend; j++) {
double distance = norm(centroids_1[i] - centroids_1[j]);
distance_vector.push_back(distance);
// Here I tried many things with for loops and while loops but
// I couldn't find a proper solution
}
}

最佳答案

使用标准库而不是原始循环。它会更容易阅读和维护。另外,指数是噪音。迭代不需要它们。

for(auto const& point : centroids_1)
distance_vector.push_back(std::accumulate(begin(centroids_1), end(centroids_1), 0.0,
[&](auto res, auto const& point2) { return res + norm(point - point2); }
));

具体来说,我们使用了 range-based-forstd::accumulate 一起循环.这是你想要做什么的描述。为每个点存储它与其他点之间距离的累积总和。

关于c++ - 在 for 循环中总结距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45058867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com