我有一个双值的std::向量。现在,我需要知道两个后续元素是否在一定距离内,以便处理它们我之前已经用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
函数,正如一位回答者所建议的那样。
了解std::adjacent_find
。
你能提高问题的语法吗?
"我有一个具有不同双值的std::向量。现在我需要知道两个连续的向量(我之前用std::sort对向量进行了排序)是否在一定的距离内才能处理它们)。"
你是否暗示double类型向量的每个元素都是唯一的值?如果是这样的话,是否可以合理地推断出你的目标是找到这些元素之间的距离?