检查所有元素是否std::vector<int> x都是二进制的最有效和最紧凑的方法是什么?
我正在寻找更有效和/或紧凑的东西,而不是迭代元素,将它们与0和1进行比较,并在找到第一个非0或非1元素后停止.也许,没有办法更快地做到这一点,但更紧凑,更好 - 可能.
我猜你想要的是检查一个容器只包含零和一个?
在这种情况下,您可以使用例如std::all_of合适的谓词来检查它:
std::vector<int> x{ 1, 0, 0, 0, 1 };
if(std::all_of(std::begin(x), std::end(x), [] (int value) {
return value == 0 || value == 1;
})) {
std::cout << "Only contain 0's and 1's." << std::endl;
}
Run Code Online (Sandbox Code Playgroud)