unordered_map に一連のビットセット ポインターがあります。
static unordered_map< size_t, bitset<BITSIZE>* > systemBits;
そして私の機能
template<typename system>
static bitset<BITSIZE> & getBitFor() {
size_t hash = typeid(system).hash_code();
bitset<BITSIZE> * bit = systemBits[hash];
if(bit == NULL) {
bit = new bitset<BITSIZE>(0);
(*bit) << POS++; // tried *bit << POS++ as well;
systemBits[hash] = bit;
}
return *bit;
}
一方、POS は最初に 1 に設定された int です。
私がやろうとしているのは、新しいビットセットごとの位置の量でビットセットをシフトすることだけです。
(*bit) << POS++;
しかし、これはうまくいかないようです。返されたビットセットを計算すると、そのすべてのビットが 0 に設定されます。次のようにすると:
bit->flip();
または (*bit).flip();
返されるビットセットは、すべての 0 を 1 に反転します。
何を与える?シフト演算子がまったく効果がないのはなぜですか?