关于使用template 递归处理 处理任意个bitset<8>拼接

// 基本情况:没有更多的 bitset 需要拼接
template<typename... Args>
std::bitset<8 * sizeof...(Args)> concatenate_bitsets() {
    return std::bitset<8 * sizeof...(Args)>();
}

// 递归情况:拼接当前 bitset 和剩余的 bitset
template<typename First, typename... Args>
std::bitset<8 * (1 + sizeof...(Args))> concatenate_bitsets(First first, Args... args) {
    // 将第一个 bitset 转换为字符串
    std::string result = first.to_string();

    // 递归拼接剩余的 bitset
    std::bitset<8 * sizeof...(Args)> rest = concatenate_bitsets(args...);
    result += rest.to_string();

    // 将拼接后的字符串转换回 bitset
    return std::bitset<8 * (1 + sizeof...(Args))>(result);
}

 

posted @ 2024-10-18 19:28  BlackSnow  阅读(26)  评论(0)    收藏  举报