我有一个 bitset<8> 的向量,如下所示:
01010110 01010111 01011000
ETC..
如何一次访问两个位?如何在变量中存储两位?
对于我想要的向量的第一个元素01
,然后01
,然后01
,然后10
等等..
我有一个 bitset<8> 的向量,如下所示:
01010110 01010111 01011000
ETC..
如何一次访问两个位?如何在变量中存储两位?
对于我想要的向量的第一个元素01
,然后01
,然后01
,然后10
等等..
我能想象的一种简单方法是这样做:
#include <iostream>
#include <string>
#include <bitset>
#include <vector>
int main() {
std::vector<std::bitset<8>> vec_b8 {
std::bitset<8>("01010110"),
std::bitset<8>("01010111"),
std::bitset<8>("01011000")
};
std::vector<std::bitset<2>> vec_b2;
for(auto b8 : vec_b8) {
for(size_t i = b8.size() - 2; i > 0; --i) {
std::bitset<2> b2;
b2[0] = b8[i];
b2[1] = b8[i+1];
vec_b2.emplace_back(b2);
}
}
for(auto b2 : vec_b2) {
std::cout << b2.to_string() << " ";
}
}
输出是
01 10 01 10 01 11 01 10 01 10 01 11 01 10 01 11 10 00
请参阅现场演示。