double 値の std::vector があります。次に、連続する 2 つの要素を処理するために、それらが特定の距離内にあるかどうかを知る必要があります。以前に でベクトルをソートしましたこれらの要素とラムダ式 (c++11) を次のようstd::sort
。
に決定するソリューションについて考えました。std::find_if
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
編集:ある回答者が提案したように、関数の後に行くと思います。