【发布时间】:2015-07-06 06:49:58
【问题描述】:
从uint64_t 构造bitset<64> 很容易:
uint64_t flags = ...;
std::bitset<64> bs{flags};
但是有没有一种从uint64_t[N] 构造bitset<64 * N> 的好方法,这样flags[0] 将引用最低64 位?
uint64_t flags[3];
// ... some assignments
std::bitset<192> bs{flags}; // this very unhelpfully compiles
// yet is totally invalid
还是我不得不循环调用set()?
【问题讨论】:
-
您的意思是从每个
uint64_t中取出最低8 位吗?以及按什么顺序? -
@Wintermute 哎呀。我想要所有的位。
flags[0]将是最低 64 位。 -
可能类似于
constexpr std::size_t FLAGS_SIZE = 3; uint64_t flags[FLAGS_SIZE]; std::bitset<64 * FLAGS_SIZE>();? -
std::bitset 没有接受元素数组的转换(其中 elements 是底层 std::bitset 类型)。在我看来,这是一个失败,因为 std::vector
是。 -
为什么投反对票?想要能够做到这一点就这么不合理吗?