6

ビットセットを関数に渡したい。ビットセットのサイズが異なる場合、関数プロトタイプのビットセット パラメーターに何sizeを割り当てる必要がありますか?bits

例えば:

bitset<3> a;
bitset<4> b;

void ABC(bitset<size> bits){
    ...
}

ABC(a);
ABC(b);
4

2 に答える 2

6

ビットセットを引数として関数をテンプレート化できます。

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

于 2014-05-26T10:27:38.250 に答える