将c ++ std :: vector的元素相互比较

时间:2013-08-26 21:18:34

标签: vector iterator standard-library c++

我有一个双值的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功能。

2 个答案:

答案 0 :(得分:1)

了解std::adjacent_find

答案 1 :(得分:0)

你能提高问题的语法吗?

“我有一个带有不同双值的std :: vector。现在我需要知道两个成功的(我先前用std :: sort对矢量进行了排序)是否在一定距离内处理它们。” / p>

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