c++ - 将 vector 中的项目与 vector 中的所有项目进行比较

标签 c++ vector

所以我目前有一个自定义结构的 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/

相关文章:

java - 你能像在 Matlab 中那样在 Java 中操作数组吗?

c++ - 在 C++ 中的 vector 中的结构中搜索枚举

c++ - 初始化类成员的最佳方法?

c++ - 一元加 (+) 对文字字符串

c++ - asio::thread_pool 在调用构造函数之前就失败了

c++ - 如何使用模板重载流插入运算符?

c++ - 如何检查 vector 是否指向 C++ 中二维 vector 中的空 vector ?

c++ - 我们如何在不循环的情况下将实现移动到多个头文件?

c++ - 从特定字符串中取出 double

c++ - 从偏移量将数组的内容写入 C++ vector