2013-03-27 96 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