比较 c++ std::vector 的元素彼此之间

Comparing a c++ std::vector's elements with each other

本文关键字:元素 彼此之间 vector std 比较 c++      更新时间:2023-10-16

我有一个双值的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类型向量的每个元素都是唯一的值?如果是这样的话,是否可以合理地推断出你的目标是找到这些元素之间的距离?