比方說,我有這個布爾數組:檢查數組中的所有布爾值是否爲真?
bool something[4] = {false, false, false, false};
現在,有沒有簡單的方法來檢查,如果此數組中所有的值是真/假一次?
而不是做它像這樣的:for循環
if(something[0] == false && something[1] == false..)
dothis();
比方說,我有這個布爾數組:檢查數組中的所有布爾值是否爲真?
bool something[4] = {false, false, false, false};
現在,有沒有簡單的方法來檢查,如果此數組中所有的值是真/假一次?
而不是做它像這樣的:for循環
if(something[0] == false && something[1] == false..)
dothis();
if (std::all_of(std::begin(something),
std::end(something),
[](bool i)
{
return i; // or return !i ;
})) {
std::cout << "All numbers are true\n";
}
@Salgar是的,他們是。 'bool'是一個整數類型 - >它是一個數字。 – 2013-12-19 17:09:06
我明白,他編輯了他的答案。之前很奇怪。 – Salgar
如果我使用std命名空間,我不必在類似cout之類的東西前輸入std :: right,對嗎?這是否也適用於此?另外,如果有人想簡單地解釋爲什麼不那麼多人使用命名空間std我會很感激。 :) – Hummelmannen
使用。
allTrue = true;
allFalse = true;
for(int i=0;i<something.size();i++){
if(something[i]) //a value is true
allFalse = false; //not all values in array are false
else //a value is false
allTrue = false; //not all values in array are true
}
我的語法可能有點偏離(有一段時間沒有使用C++),但這是一般的僞代碼。
您可以通過總結做到這一點:
#include <numeric>
int sum = std::accumulate(bool_array, bool_array + 4, 0);
if(sum == 4) /* all true */;
if(sum == 0) /* all false */;
這在一個傳球找到兩個條件,不像all_of
的解決方案將需要兩個的優勢。
使用循環。就像上面的重複一樣。 –