Проверка нескольких bool в одном условии

108
25 января 2020, 22:50

Как я могу сократить данную строку? C++

if (!damaged[0] && !damaged[1] && !damaged[2] && !damaged[3] && !damaged[4] && !damaged[5] && !damaged[6])
Answer 1

Если я правильно написал и не ошибся :), то

if (all_of(damaged,damaged+7,[](auto x)->bool{return !x;})) 
if (!any_of(damaged,damaged+7,[](auto x)->bool{return x;}))
if (accumulate(damaged,damaged+7,true,[](auto x, auto y) { return x && !y; }))
Answer 2
if (std::find(damaged, damaged + 7, false) < damaged + 7)
   ...
if (std::count(damaged, damaged + 7, false) == 7)
   ...

Второй вариант - неразумен, ибо подавляет сокращенное вычисление.

READ ALSO
Как отправить одним байтом значения дня(1-31)

Как отправить одним байтом значения дня(1-31)

Программа клиент должна отослать на сервер значения:

128
Как реализовать пропуск второго эл-та пары, если он не рядом стоит?

Как реализовать пропуск второго эл-та пары, если он не рядом стоит?

Нужно написать код, который будет искать количество пар одинаковых элементов, чтоб их считало только один раз

113
Не работает функция подсчета слов в строке при работе с файлом

Не работает функция подсчета слов в строке при работе с файлом

Необходимо посчитать количество слов в каждой строке для дальнейших действийФункция работает с обычной строкой, а вот при передаче ей буфера,...

110