c++ - vector< vector<Point3f>> 中的最高值

标签 c++ opencv c++11 vector

我知道如何找到数据类型的最大值,如 intfloatdouble 等。但我在这里使用 Point3f 处理 xyz 坐标。那么任何人都可以帮助从 std::vector 中找到 xyz 的最大值std::vector?

std::vector< std::vector<Point3f> > cluster_points;

为简单起见,假设我只想在所有 x 轴中找到最高值。

最佳答案

我不知道 opencv,所以可以使用更简单的解决方案但是...

有几个 std::for_each() 和几个 lambda 函数怎么样?

std::vector<std::vector<Point3f>> vvp { /* some data */ };

auto mx = vvp[0][0].x;
auto my = vvp[0][0].y;
auto mz = vvp[0][0].z;

std::for_each(vvp.cbegin(), vvp.cend(),
   [&](std::vector<Point3f> const & vp)
       { std::for_each(vp.cbegin(), vp.cend(),
            [&](Point3f const & p)
               { mx = std::max(mx, p.x);
                 my = std::max(my, p.y);
                 mz = std::max(mz, p.z); }); });

如果你可以使用 C++14,那么带有 auto 参数的 lambda 函数,双 std::for_each() 部分可以简单地写成

std::for_each(vvp.cbegin(), vvp.cend(), [&](auto const & vp)
 { std::for_each(vp.cbegin(), vp.cend(), [&](auto const & p)
    { mx = std::max(mx, p.x);
      my = std::max(my, p.y);
      mz = std::max(mz, p.z); }); });

所以无需显式 Poinf3f 并且可以被其他类似 point-3d 的类型使用。

关于c++ - vector< vector<Point3f>> 中的最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43896491/

相关文章:

c++ - 如何在 Qt Designer 中管理 QSplitter

c++ - Rapidxml 和 UTF8

opencv - 局部敏感哈希算法仅与opencv/flann中的二进制描述符兼容吗?

c++ - 使用基类的类型特征

C++ 错误 LNK2019

c++ - 这是 Visual Studio 2013 update 4 C++ 优化器错误还是我的代码有误?

c++ - 从模板基类继承构造函数而不重复模板参数?

c++ - 在组策略中设置最小密码长度

c++ - 使用 Qt + Opencv 时未定义的 Opencv 引用

c++ - 为 iOS 编译 OpenCV 失败 - Cmake 失败