如何在地图中使用 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。
我正在尝试使用 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。