所以我目前有一个自定义结构的 vector 。
我的 vector 中的每个元素都是一个图形点 (x,y)。给定 vector 中的索引,我需要能够计算给定索引与所有其他点之间的欧氏距离。我已经知道如何计算欧氏距离,我想知道的是如何在不旋转的情况下检查 vector 中的任何元素与所有其他元素。
例如在我的 vector 中,如果我有:
(3,5) , (4,6) , (7,8) , (5,3)
作为一个例子,我得到了索引 2 (7,8) 我需要能够计算 (7,8) 和其他 3 个点之间的距离,因为我对找到最短路径很感兴趣。我想过使用 std::rotate 函数并将 (7,8) 移到前面,但我不想弄乱我的 vector 。 有没有一种方法可以在不更改 vector 的情况下为我的 vector 中的元素指定一个索引并将其与 vector 中的所有其他元素进行比较,以便我可以进行计算?谢谢
最佳答案
for(const auto& i : yourvector)
compare(i, yourvector[foo]);
如果可以循环遍历 vector ,就应该这样做。
否则您可以对 vector 进行排序
,将最接近的元素放在最前面:http://www.cplusplus.com/reference/algorithm/sort/
关于c++ - 将 vector 中的项目与 vector 中的所有项目进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40826560/