为什么 std::find_if 和相关函数没有整个容器的重载?
Why don't std::find_if and related functions have overloads for the whole container?
std::vector<int> vec;
std::find_if(vec.begin(), vec.end(), X);
where X = function or lambda expression
以上是我们今天在C 中拥有的。大多数时候,功能,我们始终遍历整个容器。为什么没有这些功能支持 -
std::find_if(vec, X) where X = function or lambda expression
除非我没有正确搜索,否则我在C 17中看不到这一点。如果有这样的事情,是否有人在工作中...也许C 20?
我也应该添加它。
boost.range拥有它,因此没有技术原因不支持它。
不幸的是,boost。架子落后了一点,因此我使用的版本不支持std::any_of
家族。如果标准库已经支持范围,这不是问题。
我不是委员会成员,也不知道是否存在技术原因(sort(container, comparator)
和sort(it_begin, it_end)
之间的歧义是一个问题,但可以很容易地解决(,但是答案通常是没有人提出的实际论文提出了这些过载并通过标准化过程进行了斗争。
范围的TS虽然增加了这样的过载。我不敢猜测,但是什么时候会列入主要标准,或者什么时候何时可以为它们提供。
无论如何,自己写这些版本很简单,因此,如果您不想使用Boost或等待TS TS,则可以坐下一次,一口气写入所有超载并将其重复使用未来,或者只是每次需要一个算法添加算法,然后让您的收藏有机地增长。
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 可以打印矢量和矢量中的矢量的非重载C++函数
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 使用模板重载函数
- C++线程中,没有重载函数接受 X 参数
- std::vector 没有重载函数的实例与参数列表匹配
- C++重载函数,一个采用基类的参数,另一个采用派生类的参数
- 错误:无法解析对重载函数的引用;你的意思是调用它吗?
- 对重载函数find_first_not_of的不明确调用
- 如何从重载解析中删除重载函数?
- CUDA:重载函数"isnan"的多个实例
- C++派生类重载函数(带有 std::function 参数)不可见
- 避免在人为的重载函数调用中拼写出类型
- C++:如何为多个重载函数保留通用代码路径?
- 什么时候可以使用常量装饰调用我的重载函数?
- 尝试使用谓词函数会导致错误:"std::sort"未找到匹配的重载函数
- std::调用,未找到匹配的重载函数
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- 为什么使用不匹配的参数调用重载函数仍然有效
- 如何通过签名作为模板参数来解决重载函数?