c++ - 是否有类似 std::any_of 的东西会将谓词应用于所有元素
问题描述
std::any_of 函数模板的行为等价于:
template<class InputIterator, class UnaryPredicate> bool any_of
(InputIterator first, InputIterator last, UnaryPredicate pred) {
while (first!=last) {
if (pred(*first)) return true;
++first; } return false; }
所以它不会将谓词应用于所有元素。如果任何元素为此谓词返回 true,是否有其他函数返回 true,但同时 t 将为给定范围内的所有元素运行谓词?
UPD:所以为什么我需要它 - 我的函数通过某些规则修改容器的元素并返回元素的 true 被修改,否则返回 false。所以我需要知道是否有任何元素被修改
解决方案
如果任何元素为此谓词返回 true,是否有其他函数返回 true,但同时 t 将为给定范围内的所有元素运行谓词?
我的功能修改容器的元素
没有任何功能std
可以做到这一点。只有std::for_each
( _n
) 允许通过其可调用参数修改元素。
您可以为此编写一个包装器
template <typename MutableForwardIter, typename MutatingPredicate>
bool my_any_of(MutableForwardIter first, MutableForwardIter last, MutatingPredicate pred) {
bool any = false;
std::for_each(first, last, [&any, pred](auto & val){ any |= pred(val); });
return any;
}
推荐阅读
- javascript - 数据表中只显示一列而不是三列+节点js+mysql数据库+ejs
- data-visualization - 如何在双轴图表中显示/添加图例?
- flutter - 多次调用 _mapController.animateCamera
- java - Apache POI 和按内容自动调整 XSSFRow 高度
- python - 通过 Envoy 向 Python 服务器发出 GRPC-Web React 请求
- python - 如何在 Python 中为 CNN keras 绘制 ROC
- kubernetes - nodejs 和 kubernetes:如何重新启动部署推出 (nodejs)
- ios - Xcode 单元测试错误“无法从构建环境中获取 Google 服务文件中的 GOOGLE_APP_ID”
- openshift - OpenShift 使用 import-image 生成自定义图像标签
- java - 使用可绘制资源在 android studio 上创建 cricle 按钮(但颜色不会显示)