この関数が何をするのか、その背後にあるロジックを理解したいです。
すべての用語を単独で検索しましたが (例: size_t
、bitset
...)、それでもロジックの流れを知りたいですか?
size_t popcount(size_t n) {
std::bitset<sizeof(size_t) * CHAR_BIT> b(n);
return b.count();
}
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
、ビットを格納するための標準ライブラリ提供のテンプレート クラスです。このクラスが提供する機能を知り、コードがそれをどのように使用するかをマッピングするために、残りの部分はほとんどドキュメントを参照していることがわかります。