C++ 将向量中的项与向量中的所有项进行比较

C++ 将向量中的项与向量中的所有项进行比较,c++,vector,C++,Vector,所以我现在有一个自定义结构的向量 向量中的每个元素都是一个图点(x,y)。给定向量中的一个索引,我需要能够计算给定索引和所有其他点之间的欧几里德距离。我已经知道如何计算欧几里德距离,我想知道的是如何在不旋转的情况下检查向量中的任何元素与所有其他元素。 例如,在我的向量中,如果我有: (3,5)、(4,6)、(7,8)、(5,3) 作为一个例子,我得到了索引2(7,8),我需要能够计算(7,8)和其他3个点之间的距离,因为我对寻找最短路径感兴趣。我想使用std::rotate函数并将(7,8)移到

所以我现在有一个自定义结构的向量

向量中的每个元素都是一个图点(x,y)。给定向量中的一个索引,我需要能够计算给定索引和所有其他点之间的欧几里德距离。我已经知道如何计算欧几里德距离,我想知道的是如何在不旋转的情况下检查向量中的任何元素与所有其他元素。

例如,在我的向量中,如果我有:

(3,5)、(4,6)、(7,8)、(5,3)

作为一个例子,我得到了索引2(7,8),我需要能够计算(7,8)和其他3个点之间的距离,因为我对寻找最短路径感兴趣。我想使用std::rotate函数并将(7,8)移到前面,但我不想弄乱我的向量有没有一种方法可以在向量中为一个元素指定一个索引,并在不改变向量的情况下将其与向量中的所有其他元素进行比较,这样我就可以进行计算?谢谢

for(const auto& i : yourvector)
  compare(i, yourvector[foo]);
如果在向量中循环是正确的,那么应该这样做

否则,您可以对向量进行排序,将最接近的元素放在第一位:

如果在向量中循环是正确的,那么应该这样做


否则,您可以对向量进行排序,将最接近的元素放在第一位:

您是否尝试过从前到后对向量进行简单循环,忽略您正在比较的一个元素?噢,哇,我没有尝试过!这很有道理!谢谢,这正是我想要的。我讨厌成为那个家伙,但请记住,如果这是解决方案,请将下面的答案标记为已接受,或者写下你自己的答案解释你所做的。你是否尝试过从前到后的向量简单循环,忽略你正在比较的一个元素?哦,哇,我没有尝试过!这很有道理!谢谢,这正是我想要的。我讨厌成为那个家伙,但请记住,如果这是解决方案,请将下面的答案标记为已接受,或者写下你自己的答案,解释你做了什么。