【问题标题】:Compare item in a vector to all items in a vector将向量中的项目与向量中的所有项目进行比较
【发布时间】:2016-11-27 07:03:09
【问题描述】:

所以我目前有一个自定义结构的向量。

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

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

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

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

【问题讨论】:

  • 您是否尝试过从前到后遍历向量的简单循环,忽略您要比较的一个元素?
  • 哦,哇,我还没试过!这很有意义!谢谢,这正是我想要的
  • 我讨厌成为那个人,但请记得将以下答案标记为已接受,如果它是解决方案,或者写下你自己的答案来解释你做了什么。

标签: c++ vector


【解决方案1】:
for(const auto& i : yourvector)
  compare(i, yourvector[foo]);

如果循环遍历向量就可以了。

否则,您可以sort 向量将最接近的元素放在首位:http://www.cplusplus.com/reference/algorithm/sort/

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
相关资源
最近更新 更多