这个问题类似于这个问题: What is the most elegant way to check if all values in a boolean array are true?
但是对于c ++中的vector<bool>
。
如何将all_of
用于此目的(例如,我想检查范围之间的值,元素10到20),因此我无法使用begin
和end
。
答案 0 :(得分:3)
如果要使用std::all_of
,则只返回谓词函数中的值:
#include <vector>
#include <iostream>
#include <algorithm>
int main()
{
std::vector< bool > v( 30, true );
const bool all = std::all_of( std::begin(v)+10, std::begin(v)+20, []( const bool v){ return v; } );
std::cout << all << std::endl;
}
答案 1 :(得分:2)
我只是尝试std::find(begin(v)+10, begin(v)+20, false)
- 如果10到20之间的所有值均为begin(v)+20
,则会返回true
。