我正在阅读图像文件并存储每个点位置。然后我将这些点组合在一起以找到直线,水平线和斜线。对于这些细分中的每一个,我然后添加诸如start& amp; x&结尾y轴,其高度,宽度等。在我以前的版本中,我创建了一个多维向量来实现上述功能。然后我使用find_if查找附近的段。
我之前的实施:
newSequence = find_if( points.begin(), points.end(), [&](vector<int>&v1) -> bool
{
return
v1[0] >= index_a1 &&
v1[0] <= index_a2 &&
v1[1] >= index_b1 &&
v1[1] <= index_b2 &&
v1[4] != index_a4 &&
v1[8] == index_a8;
});
虽然有效但现在我想提高其性能并且正在调查binary_search和lower_bound但它会引发错误。
vector <vector<int>>::iterator newSequence;
vector <vector<int>> points;
newSequence = lower_bound( points.begin(), points.end(),[](vector<int>&v1)->bool{
return v1[0] = 1;
});
我还想知道是否有更好的存储和搜索超过4列的这类数据。
答案 0 :(得分:2)
几年前我遇到了图像处理问题(正在使用道格拉斯peucker算法),我遇到了严重的性能问题。它永远运行。然后我改为使用空间索引库,然后立即运行。我可以检查一下。因此,如果你真的想提高性能,那么就去寻找空间索引。
答案 1 :(得分:0)
如果你看一下,例如this reference,您会看到std::lower_bound
函数需要值进行比较。你没有通过那个。为此,您无法使用,例如, std::lower_bound
但必须使用其他算法。