搜索多维向量

时间:2013-08-09 16:42:07

标签: c++ algorithm vector

我正在阅读图像文件并存储每个点位置。然后我将这些点组合在一起以找到直线,水平线和斜线。对于这些细分中的每一个,我然后添加诸如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列的这类数据。

2 个答案:

答案 0 :(得分:2)

几年前我遇到了图像处理问题(正在使用道格拉斯peucker算法),我遇到了严重的性能问题。它永远运行。然后我改为使用空间索引库,然后立即运行。我可以检查一下。因此,如果你真的想提高性能,那么就去寻找空间索引。

答案 1 :(得分:0)

如果你看一下,例如this reference,您会看到std::lower_bound函数需要进行比较。你没有通过那个。为此,您无法使用,例如, std::lower_bound但必须使用其他算法。