ビットセットを関数に渡したい。ビットセットのサイズが異なる場合、関数プロトタイプのビットセット パラメーターに何size
を割り当てる必要がありますか?bits
例えば:
bitset<3> a;
bitset<4> b;
void ABC(bitset<size> bits){
...
}
ABC(a);
ABC(b);
ビットセットを関数に渡したい。ビットセットのサイズが異なる場合、関数プロトタイプのビットセット パラメーターに何size
を割り当てる必要がありますか?bits
例えば:
bitset<3> a;
bitset<4> b;
void ABC(bitset<size> bits){
...
}
ABC(a);
ABC(b);
ビットセットを引数として関数をテンプレート化できます。
template <size_t bitsetsize>
void ABC(bitset<bitsetsize> a) {
...
}
このテンプレート化された関数は、コードのどこかで使用する場合にのみ、コンパイラによって生成されます。この関数を異なるサイズのビットセットに使用すると、サイズごとに個別の関数が 1 回インスタンス化されます。static
したがって、関数インスタンスが異なるため、ローカル状態変数 (関数に対してローカルな変数) に依存するコードを避けるように注意する必要があります。
オブジェクトのコピーを避けるために、参照または定数参照を使用することをお勧めします。
template <size_t bitsetsize>
void ABC(const bitset<bitsetsize> &a) {
...
}
要件に合わない可能性のある代替手段は、可能であればstd::vector<bool>
代わりに使用することです。std::bitset