Каков самый быстрый способ определить, содержит ли вектор, содержащий логические значения (который обычно оптимизирован как битовый массив), только истинные значения? Для небольших векторов, я думаю, было бы неплохо сравнить вектор с другим вектором, хранящим только истинные значения (при условии, что мы знаем размер обоих векторов).
Дано const vector<bool> foo(13)
использование find
:
cout << (find(foo.begin(), foo.end(), false) == foo.end()) << endl;
Или если у вас есть C ++ 11 вы можете none_of
:
cout << none_of(cbegin(foo), cend(foo), logical_not<bool>()) << endl;
В качестве альтернативы, если вы знаете свой vector
размер во время компиляции вы можете использовать bitset
«а all
метод:
bitset<13> foo;
cout << foo.all() << endl;
Других решений пока нет …