簡體   English   中英

是否有類似 std::any_of 的東西將謂詞應用於所有元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM