C++ C++;位集<&书信电报;操作员不工作。指向位集变量的指针
我在无序的_映射中有一组位集指针C++ C++;位集<&书信电报;操作员不工作。指向位集变量的指针,c++,pointers,bitset,bit-shift,C++,Pointers,Bitset,Bit Shift,我在无序的_映射中有一组位集指针 static unordered_map< size_t, bitset<BITSIZE>* > systemBits; 或 (*位).flip() 返回的位集将所有0翻转为1 有什么好处?为什么移位运算符没有任何作用?因为您没有将结果分配给任何对象。如果你想换一个int,你也会遇到同样的问题 另外,您已经将位集初始化为零,并且任何移位量的零始终为零。明显的问题:POS等于0吗?尽管如此,我还是在两个不同的对象上调用了两次该函数。因此,
static unordered_map< size_t, bitset<BITSIZE>* > systemBits;
或
(*位).flip()
返回的位集将所有0翻转为1
有什么好处?为什么移位运算符没有任何作用?因为您没有将结果分配给任何对象。如果你想换一个int,你也会遇到同样的问题
另外,您已经将位集初始化为零,并且任何移位量的零始终为零。明显的问题:POS等于0吗?尽管如此,我还是在两个不同的对象上调用了两次该函数。因此,它应该至少以1个移位打印一个位集。但是没有,POS=1;为什么需要分配任务?我直接处理位集。@sidar的原因与int I=3相同;我觉得那是很蹩脚的。(*位)=1
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;
}
(*bit) << POS++;
bit->flip();