我想了解这个功能的作用,背后的逻辑。
我自己搜索了每个术语(例如:size_t
,bitset
...)但是我仍然想知道逻辑是如何流动的?
size_t popcount(size_t n) {
std::bitset<sizeof(size_t) * CHAR_BIT> b(n);
return b.count();
}
答案 0 :(得分:3)
返回设置的位集b
中的位数(即值为1)。
size_t popcount(size_t n)
将n
作为要在bitset中设置的位数。
std::bitset<sizeof(size_t) * CHAR_BIT> b(n);
创建std::bitset
return b.count();
检查std::bitset
的 documentation ,查看std::bitset::count
返回的内容,并回答您的问题。如您所见std::bitset
是一个标准库提供的用于存储位的模板类。一旦您了解其余部分就非常喜欢文档,以了解该类提供的功能并将其映射到您的代码如何使用它。 / p>