是否有内置函数返回“布尔向量中真值的数量”?

sin*_*oky 0 c++

例如:

b = [TTFFTF],则函数返回 3 。

我可以通过 for 循环程序来做到这一点。但是,是否有函数返回“布尔向量中真值的数量”来比 for 循环程序更快地做到这一点?

谢谢。

als*_*her 10

std::count(b.begin(), b.end(), true);

可能是个好主意。如果你想尝试更详细:

代码

#include <vector>     // std::vector
#include <algorithm>  // std::count
#include <iostream>   // std::cout, std::endl

int main(){

    std::vector<bool> b = { true, true, false, true, false, true };

    auto count = std::count(b.begin(), b.end(), true);

    std::cout << "Count = " << count << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出

计数 = 4

  • 从技术上讲,std::count 将返回 `ptrdiff_t`(或者,更准确地说,std::vector&lt;bool&gt;::iterator::difference_type 在实践中将是 `ptrdiff_t`。这将是一个有符号类型(这很疯狂 - std::count 应该返回一个无符号值),但它可能不是 int。这可以通过“自动计数”来避免。 (2认同)