std::bitset<>
インスタンス化時に動的にサイズ変更できる便利なアナログはありますが、boost::dynamic_bitset<>
次のような操作を行うことで、Cで動的なサイズのビットセットを簡単に作成できます。
typedef struct { node_t node; block_t bits[0]; } node_bitset_t;
p = (node_bitset_t *)malloc( (sizeof(node_t) + sizeof(block_t)*blocks) * array_size);
コンパイル時std::vector<std::bitset<bits>>
に知っている場合にのみ、これを使用できます。bits
を使用するstd::vector<boost::dynamic_bitset<>>
と、追加のアロケータ呼び出しが表示されます。上記のCコードのバランスを実現する妥協点はありますか?
たとえば、std :: vector <...>用のカスタムアロケータがあり、それぞれの後に余分なスペースを残してそこにboost::dynamic_bitset<>
割り当てm_block
ますが、それでもおそらくのポインタが必要になりますm_block
。