如何从C++中的值<bool>构造整数值

sur*_*h m 3 c++ c++11 c++14

#include <iostream>
#include <vector>

int main()
{
    std::vector<bool> bitvec{true, false, true, false, true};
    std::string str;
    for(size_t i = 0; i < bitvec.size(); ++i)
    {   
        // str += bitvec[i];
        std::vector<bool>::reference ref = bitvec[i];
        // str += ref;
        std::cout << "bitvec[" << i << "] : " << bitvec[i] << '\n';
        std::cout << "str[" << i << "] : " << str[i] << '\n';
    }   
    std::cout << "str : " << str << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我们如何从bool值的std :: vector构造一个整数值.我想将它转换为std :: string然后转换为bool值的std :: vector中的整数,但是将其转换为bool值的std :: vector中的字符串失败.我知道bool和std :: string元素的std :: vector都不是同一个类型.所以需要帮助.

Lak*_*arg 8

这可能是你正在寻找的:

auto value = std::accumulate(
    bitvec.begin(), bitvec.end(), 0ull,
    [](auto acc, auto bit) { return (acc << 1) | bit; });
Run Code Online (Sandbox Code Playgroud)

std::accumulate出现在<numeric>标题中

说明:我们迭代向量中的元素并继续累积部分结果acc.当必须添加一个新位时acc,我们通过左移来为新位腾出空间acc,然后通过或者用acc来加上该位.