私は(循環)を持っていて、別の部分文字列(Kはもちろんコンパイル時に知られています)として、部分文字列(それが発生する可能性があるため、ラップアラウンドして取得する必要があります)bitset<N>
を取得したいと思いますi...i+K-1
i = N - 1; K = 5
N-1; 0; 1; 2; 3
bitset<K>
operator &
異なるサイズのオペランドを許可しないため、明らかなことは機能しません(それは些細なことですが?)
bitset<N> data = ...;
bitset<K> mask; mask = ~mask;
bitset<K> rotated = in << i | in >> (K - i);
bitset<K> slice = rotated & mask;
次善の策は大規模では機能しませんN
bitset<K> slice( rotated.to_ullong() & mask.to_ullong() );
実装する以外に何をすべきbitset<min<N,K>::value> operator &(bitset<N>,bitset<K>)
か?(そしておそらくそれほど非効率的ではないかもしれませんが、このアプローチはセットを3回コピーします)