読者です 読者をやめる 読者になる 読者になる

【C++】std::bitset のoperator[]

使ってみて少し迷いました

#include <bitset>
#include <vector>
#include <iostream>
int main()
{
    std::bitset<4> bit(0b1000);
    std::vector<int> v = {1,0,0,0};
    if(v[0] == bit[0]) std::cout << "true" << std::endl;
    else std::cout << "false" << std::endl;
}
false

違和感があったところ

std::vector の場合 [0...n]
std::bitset の場合 [n...0]

ビットシフトと考えれば問題解決

if(bit[x]) { ... }
  ↓ 同じ
if((bit>>x)&1) { ... }