c++ - 在点 vector 中搜索/查找点的最佳方法是什么?

标签 c++ opencv

我试图根据它们的 x 坐标对点进行排序,并对 vector 进行二分搜索,但我找不到我知道它们存在的点。

感谢您的帮助。

struct PointSort {
    bool operator() (cv::Point pt1, cv::Point pt2) { return (pt1.x < pt2.x);}
} mySort;

.
.
.
std::sort (temp.begin(), temp.end(), mySort);
if (std::binary_search(temp.begin(), temp.end(), somePoint, mySort)){
    doSomething();
}

最佳答案

所以像这样:

struct point { int x, y; };
std::vector<point> pts { {1,2}, {4,5} };
auto comp_x=[](const point& p1, const point& p2) {
    return p1.x < p2.x;
};
std::sort(begin(pts), end(pts), comp_x);
//using binary search
auto it=std::lower_bound(begin(pts), end(pts), some_point, comp_x);
//it now points to the point

下限函数使用二分法查找第一个元素(upper_bound 查找最后一个)并为您提供该元素的迭代器。

如果您不需要对它进行排序,我会使用 std::find

auto it=std::find_if(begin(pts), end(pts), [&](const point& p) {
        return p.x==some_point.x;
    }
);

关于c++ - 在点 vector 中搜索/查找点的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20708097/

相关文章:

c++ - MATLAB 因 calllib(C++ .h 文件和 FORTRAN .dll)而崩溃

c++ - 计算编译时数组时编译器相关错误

OpenCV 构建问题 Visual Studio 2013

python - 使用 PIL 或 Opencv 校正图像亮度的方法是什么?

c++ - 什么是 C++ 优化和 Visual Studio 中的整个程序优化

c++ - 通过 Powershell 远程 session 执行时程序输出不同

c++ - 如何将 QTableWidgetItem 转换为自定义子类

c++ - 使用依赖项 : how to get target dependencies on host? 交叉编译

python - pycapture2 视频捕获和线程

c++ - 测量 OpenCV FPS