std::any_of
std::any_of
std::any_of 是 C++11 引入的一個(gè)算法函數(shù),位于頭文件 <algorithm> 中。它用于檢查給定范圍內(nèi)是否有任何元素滿足特定條件。以下是關(guān)于 std::any_of 的詳細(xì)解析:
-
功能描述:
- 檢查范圍
[first, last)內(nèi)是否有任何元素滿足由謂詞(predicate)定義的條件。 - 如果有任意一個(gè)元素滿足條件,則返回
true;否則返回false。
- 檢查范圍
-
函數(shù)簽名:
template <class InputIt, class UnaryPredicate> bool any_of(InputIt first, InputIt last, UnaryPredicate p); -
參數(shù)說(shuō)明:
first, last:指定要檢查的元素范圍,使用輸入迭代器表示。p:一個(gè)一元謂詞(UnaryPredicate),接受一個(gè)元素作為參數(shù)并返回一個(gè)可轉(zhuǎn)換為bool的值。如果該值為true,則認(rèn)為該元素滿足條件。
-
返回值:
- 如果在
[first, last)范圍內(nèi)有任何元素使得p(element)返回true,則返回true;否則返回false。
- 如果在
-
示例代碼:
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // 檢查是否有大于 3 的元素 bool result = std::any_of(numbers.begin(), numbers.end(), [](int n) { return n > 3; }); if (result) { std::cout << "存在大于 3 的元素" << std::endl; } else { std::cout << "不存在大于 3 的元素" << std::endl; } return 0; } -
注意事項(xiàng):
std::any_of在找到第一個(gè)滿足條件的元素后立即返回true,不會(huì)繼續(xù)檢查剩余元素,因此效率較高。- 如果范圍為空(即
first == last),則直接返回false。
PS: std::all_of, std::none_of的用法類似。std::all_of是所有元素都滿足條件,std::none_of是所有元素都不滿足條件。

浙公網(wǎng)安備 33010602011771號(hào)