如何在地图中使用 bitset?

How can I use bitset in map?

我正在尝试使用 bitset 存储 0 到 25 个数字及其 5 位表示。
这是代码:

int main()
{
   
   map<int, bitset<5> > myMap;
   myMap[0] = 00000;
   myMap[1] = 00001;
   myMap[2] = 00010;
   myMap[3] = 00011;

   // Like this I have stored 0 to 25 numbers.     
    
   auto pos = myMap.find(2);
   cout<< pos-> second <<endl;  // output is 01000
   
   pos = myMap.find(3);
   cout<< pos->second <<endl;   // output is 01001

   pos = myMap.find(15);
   cout<< pos->second <<endl;   // output is 01001

   pos = myMap.find(12);
   cout<< pos->second <<endl;   // output is 00000
   return 0;
}  

看来我的输出有误
我哪里错了?

0xxx 是一个八进制数(基数为 8)。您可能需要 0b0010 (C++14) 或 "00010".

这一行:

myMap[2] = 00010;

int 文字被转换为 bitset。八进制文字 00010 是十进制的 8,打印输出 01000。类似地,文字 00011 是十进制的 9,它打印出 01001.

你似乎想要:

myMap[0] = 0;
myMap[1] = 1;
myMap[2] = 2;
myMap[3] = 3;
// etc.

// or simply
for(int i = 0; i < 25; ++i)
  myMap[i] = i;

这里是 demo