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::bitsetstd::bitset::countが返され、それがあなたの質問に答えているかを確認してください。ご覧のとおりstd::bitset、ビットを格納するための標準ライブラリ提供のテンプレート クラスです。このクラスが提供する機能を知り、コードがそれをどのように使用するかをマッピングするために、残りの部分はほとんどドキュメントを参照していることがわかります。

于 2013-03-27T04:48:24.847 に答える