我有一个(循环的)bitset<N>
并且想检索子字符串i...i+K-1
(它可能发生的地方i = N - 1; K = 5
,所以它必须环绕并获取N-1; 0; 1; 2; 3
),作为另一个bitset<K>
(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 次)