检查向量是否为二进制的快速而紧凑的方法

Ole*_*ikh 2 c++ stl vector

检查所有元素是否std::vector<int> x都是二进制的最有效和最紧凑的方法是什么?

我正在寻找更有效和/或紧凑的东西,而不是迭代元素,将它们与0和1进行比较,并在找到第一个非0或非1元素后停止.也许,没有办法更快地做到这一点,但更紧凑,更好 - 可能.

Snp*_*nps 8

我猜你想要的是检查一个容器只包含零和一个?

在这种情况下,您可以使用例如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)