给定像std::vector<T>
这样的容器,其中T
是数字量的通用类型(如int
,float
等...),我想有一个谓词作为参数:
我想作为输出:
true
)在C ++标准库中看起来甚至没有range
的概念,这对我来说很奇怪,仅仅是因为有很多有趣的算法和类型,但没有什么可以满足我的目的这种情况。
在继续我自己的路径之前,我想,在C ++库中的类型和算法方面有这样的东西吗?
答案 0 :(得分:1)
我认为我首先要使用std::minmax_element
来查找集合中最小和最大的元素,而不是评估集合中每个项目的条件。
从那里开始,测试result.first < minimum
和/或result.second > maximum
是否很简单。
处理公差基本上是在扩大范围内重复测试的问题。
至于这是否可能比std::find_if
或std::all_of
更好,它将取决于您在集合中预期的项目数量以及找到超出范围的值的可能性这将允许提前退出。我认为您需要对数据有一些了解才能对其进行有意义的预测。