2

我想了解这个函数的作用,它背后的逻辑。

我已经单独搜索了每个术语(例如:size_tbitset...),但我仍然想知道逻辑是如何流动的?

size_t popcount(size_t n) {
    std::bitset<sizeof(size_t) * CHAR_BIT> b(n);
    return b.count();
}
4

1 回答 1

3

返回位集中设置的位数b(即值为 1)。

size_t popcount(size_t n) 

n作为要在位集中设置的位数传递。

std::bitset<sizeof(size_t) * CHAR_BIT> b(n);

创建一个std::bitset

return b.count();

检查文档std::bitset查看std::bitset::count返回的内容并回答您的问题。如您所见std::bitset,这是一个标准库提供的用于存储位的模板类。一旦您了解rest 非常关注文档以了解此类提供的功能并将其映射到您的代码如何使用它。

于 2013-03-27T04:48:24.847 回答