std::all_of
是 C++ 標準庫中的一個算法,用于檢查容器中的所有元素是否滿足給定的條件。如果容器為空,std::all_of
的行為會有所不同,因為它不會檢查任何元素。
在這種情況下,std::all_of
的返回值取決于你的需求。通常,我們認為一個空容器滿足所有條件,因此 std::all_of
將返回 true
。這是基于數學上的“全稱量詞”(universal quantification)的定義:對于空集合,所有元素都滿足給定條件。
然而,在某些情況下,你可能希望對空容器返回 false
。這取決于你的具體需求和場景。在這種情況下,你可以在調用 std::all_of
之前檢查容器是否為空。
示例代碼:
#include<iostream>
#include<vector>
#include<algorithm>
bool is_positive(int n) {
return n > 0;
}
int main() {
std::vector<int> empty_vec;
if (empty_vec.empty()) {
std::cout << "The container is empty."<< std::endl;
} else {
bool all_positive = std::all_of(empty_vec.begin(), empty_vec.end(), is_positive);
std::cout << "All elements are positive: "<< std::boolalpha<< all_positive<< std::endl;
}
return 0;
}
在這個示例中,我們首先檢查 empty_vec
是否為空。如果為空,我們輸出一條消息。否則,我們使用 std::all_of
檢查容器中的所有元素是否為正數。由于 empty_vec
為空,std::all_of
不會檢查任何元素,并返回 true
。