Проверьте, является ли std :: vector & lt; bool & gt; состоит только из истинных значений

Каков самый быстрый способ определить, содержит ли вектор, содержащий логические значения (который обычно оптимизирован как битовый массив), только истинные значения? Для небольших векторов, я думаю, было бы неплохо сравнить вектор с другим вектором, хранящим только истинные значения (при условии, что мы знаем размер обоих векторов).

1

Решение

Дано const vector<bool> foo(13) использование find:

cout << (find(foo.begin(), foo.end(), false) == foo.end()) << endl;

Или если у вас есть вы можете none_of:

cout << none_of(cbegin(foo), cend(foo), logical_not<bool>()) << endl;

В качестве альтернативы, если вы знаете свой vectorразмер во время компиляции вы можете использовать bitset«а all метод:

bitset<13> foo;

cout << foo.all() << endl;

Живые примеры

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector