我有一个双值的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
功能。
答案 0 :(得分:1)
了解std::adjacent_find
。
答案 1 :(得分:0)
你能提高问题的语法吗?
“我有一个带有不同双值的std :: vector。现在我需要知道两个成功的(我先前用std :: sort对矢量进行了排序)是否在一定距离内处理它们。” / p>
你是否暗示double类型的向量的每个元素都是唯一值?如果是这样的话,可以合理地推断出你找到每个元素之间距离的目标吗?