簡體   English   中英

C ++一次訪問bitset <8>的兩位

[英]C++ Accessing bitset<8> two bits at a time

我有一個bitset <8>的向量,看起來像這樣:

01010110 01010111 01011000等。

如何一次訪問兩個位? 如何在變量中存儲兩位?

對於向量的第一個元素,我想要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 

觀看現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM