0

我有一个双值的 std::vector。现在我需要知道两个后续元素是否在一定距离内才能处理它们。我之前用 对向量进行了排序std::sort
我已经考虑过使用std::find_iflambda 表达式 (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按照一位回答者的建议去追求这个功能。

4

2 回答 2

1

阅读有关std::adjacent_find.

于 2013-08-26T21:57:51.957 回答
0

你能提高你的问题的语法吗?

“我有一个具有不同双精度值的 std::vector。现在我需要知道两个后续的(我之前使用 std::sort 对向量进行了排序)是否在一定距离内以处理它们)。”

您是否暗示 double 类型向量的每个元素都是唯一值?如果是这样,是否可以合理地推断出您的目标是找到每个元素之间的距离?

于 2013-08-26T22:08:35.347 回答