我有一个双值的 std::vector。现在我需要知道两个后续元素是否在一定距离内才能处理它们。我之前用 对向量进行了排序std::sort
。
我已经考虑过使用std::find_if
lambda 表达式 (c++11) 确定这些元素的解决方案,如下所示:
std::vector<std::vector<double>::iterator> foundElements;
std::vector<double>::iterator foundElement;
while (foundElement != gradients.end())
{
foundElement = std::find_if(gradients.begin(), gradients.end(),
[] (double grad)->bool{
return ...
});
foundElements.push_back(foundElement);
}
但是谓词实际上应该返回什么?计划是我使用迭代器的向量稍后修改向量。
我是在正确的轨道上使用这种方法还是太复杂/不可能?还有哪些其他可能更实用的解决方案?
编辑:我想我会std::adjacent_find
按照一位回答者的建议去追求这个功能。