2013-03-27 97 views
2

我想了解这个功能是什么,它背后的逻辑。功能背后的逻辑

我已经搜索了自己的每一项(例如:size_t,bitset ...),但我仍然想知道逻辑是如何流动的?

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

只是做更多的“自己搜索每个术语” – 2013-03-27 04:47:56

回答

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(); 

检查documentationstd::bitset看什么std::bitset::count回报和回答你的问题。正如你看到的std::bitset是一个标准库提供的模板类用于存储bits.Once你明白,休息是非常令人兴奋的文档,知道这个类提供了什么功能,并将其映射到您的代码如何使用它。

+0

你认为@Sara从你提供这样的答案中学到了什么。我会告诉你什么:她(或他)知道没有必要自己做任何工作。只是在SO上发布一个关于任何琐事的问题,并让ALS回答它。 – 2013-03-27 04:48:55

+0

@ Cheersandhth.-Alf:我希望现在能做到。我明白你想说什么,但我的猜测是OP不明白'std :: bitset'是什么,因此是问题。 – 2013-03-27 04:51:10

+0

@ Cheersandhth.-Alf:你一直在这里;几乎所有进来的人都在寻求某种知识。为什么提供这些知识是一个问题,而且,你在哪里画线?不要回答 - 自[tag:家庭作业]以来的普遍共识已被弃用,因为我们只根据常见问题解答中的规则画线。如果这个网站是Google搜索的话,那么每天在这个网站上问的绝大多数问题都可以得到解答。哎呀,我敢打赌,我自己回答了几百个问题。 – NotMe 2013-03-27 05:07:23