変更されない特定の 1 と 0 のシーケンスを使用して、 2 16ビットの静的定数ビットセットを格納したいと考えています。
この投稿で提案されているように、初期化文字列を使用することを考えました:
std::bitset<1<<16> myBitset("101100101000110 ... "); // the ellipsis are replaced by the actual 65536-character sequence
しかし、コンパイラ (VS2013) では、「文字列が長すぎます」というエラーが表示されます。
アップデート
上記のリンクの投稿で提案されているように、文字列を小さなチャンクに分割してみました。
std::bitset<1<<16> myBitset("100101 ..."
"011001 ..."
...
);
しかし、エラーC1091: コンパイラの制限: 文字列の長さが 65535 バイトを超えています。私の文字列は 65536 バイトです (技術的には 65537、EOS 文字付き)。
他のオプションは何ですか?
アップデート
luk32のおかげで、これは私が最終的に得た美しいコードです:
const std::bitset<1<<16> bs = (std::bitset<1<<16>("101011...")
<< 7* (1<<13)) | (std::bitset<1<<16>("110011...")
<< 6* (1<<13)) | (std::bitset<1<<16>("101111...")
<< 5* (1<<13)) | (std::bitset<1<<16>("110110...")
<< 4* (1<<13)) | (std::bitset<1<<16>("011011...")
<< 3* (1<<13)) | (std::bitset<1<<16>("111011...")
<< 2* (1<<13)) | (std::bitset<1<<16>("111001...")
<< 1* (1<<13)) | std::bitset<1<<16>("1100111...");