Vector 比较c++;标准::向量';元素之间的相互作用

Vector 比较c++;标准::向量';元素之间的相互作用,vector,iterator,standard-library,c++,Vector,Iterator,Standard Library,C++,我有一个双值的std::向量。现在我需要知道两个后续元素是否在一定距离内,以便处理它们。我以前用std::sort对向量进行了排序 我考虑了一个解决方案,用std::find_if和lambda表达式(c++11)来确定这些元素,如下所示: std::vector<std::vector<double>::iterator> foundElements; std::vector<double>::iterator foundElement; while (fo

我有一个双值的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::vector foundElements;
std::vector::iterator foundElement;
while(foundElement!=gradients.end())
{
foundElement=std::find_if(gradients.begin(),gradients.end(),
[](双梯度)->bool{
返回。。。
});
foundElement.向后推(foundElement);
}
但是谓词实际上应该返回什么呢?我的计划是使用迭代器向量来修改向量。
我采用这种方法是正确的还是太复杂/不可能?其他可能更实用的解决方案是什么


编辑:我想我会按照一位回答者的建议,使用
std::nextended\u find
函数。

阅读
std::nextended\u find

你能提高你问题的语法吗

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


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

“我需要知道是否有两个后续元素”=>我相信您忘记了写部分内容。:)当然:)我想现在这篇文章更容易理解了。不,我不是说每个元素都是唯一的,但很可能是这样的。不管怎样,没关系。我们的目标不是找到距离,而是找到非常接近的元素。