c++ - 对相邻元素进行操作的标准算法
问题描述
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 更大的差异。应该注意的是,这不适用于输入迭代器——它们是一次性的。
推荐阅读
- c++ - 如何始终在具有实时数据的 ofstream 文件中包含 N 行
- python - 通过和/或将文本拆分为句子
- c# - 如何将谓词作为参数传递到 ASP.NET MVC 中的 IActionResult
- git - 本地合并分支无法解决 github 上的拉取请求
- apache-spark - Spark Streaming 批处理持续时间
- mysql - Mysql2::Error: Data too long for column 'object' at row 1 尝试使用 Active Record 更新时出错
- reactjs - Firebase消息传递和ReactJS,当网站在前台时,未收到推送通知
- python - Python中的列表切片与索引?
- mysql - MySQL错误即使清除和重新安装也不能解决它
- node.js - 所有测试都通过时测试套件失败:Jest & Supertest with GraphQL request