如何解决对相邻元素进行操作的标准算法
std::adjacent_find
查找满足给定谓词的前两个连续元素。我正在寻找其他算法,这些算法也有一个采用(前一个,当前)对的谓词。这对于渲染多边形、基于样本数据计算数值正交等很有用。
除了std::adjacent_find
之外还有std::adjacent_difference
,可以用来实现一维过滤器,但是如果你只想要op(previous,current)的总和就没有用了。
可以用 std::ranges 中的某种视图来模拟这些函数吗?
解决方法
对此没有特殊功能,因为您只需调用二进制转换 std::transform(c.begin(),std::prev(c.end()),std::next(c.begin()),op)
。这适用于重叠范围 [c.begin(),c.end()-1]
和 [c.begin()+1,c.end()]
。
同样,其他需要两个输入范围的操作也可以在两个重叠范围上工作,只要它们不修改输入即可。
这也适用于比 +/-1 更大的差异。应该注意的是,这不适用于输入迭代器 - 它们是一次性的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。