Return 没有循环的位位置

Return bit positions without loops

有没有在 C++ 中使用 std::bitset 而不使用循环 (for/while) 来查找位位置的方法? 假设我们有一个二进制数 11001,我们想找到所有 0 的位置。 任何类型的预构建、时间 space 高效函数?

without using loops

we have a binary number 11001 and we'd like to find all 0s positions

自己展开循环。

void check(unsigned pos, unsigned number, std::vector<unsigned>& out) {
    if (!(number & (1u << pos))) out.push_back(pos);
}
std::vector<unsigned> positions_of_0s(unsigned number) {
    std::vector<unsigned> ret;
    check(0, number, ret);
    check(1, number, ret);
    check(2, number, ret);
    check(3, number, ret);
    check(4, number, ret);
    return ret;
}