[英]Does it make sense to give reverse iterators to std::any_of and the like?
[英]Is there something like std::any_of that will apply predicate to all elements
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.