我如何专门用于以下目的
How can I use Bitfields specifically for the following purpose
为了学习有效的内存管理,我想知道如何使用单个位字段集体表示8个bool值,以及如何评估和设置每个值位。
原因是我自己的程序中,我不会因为成千上万的行而粘贴。在全球范围内,有一百个左右的bool,这一切都极大地影响fps。
示例:
uint8_t b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1;
if (!b0) {
// do something
b0 = true;
}
位字段只能为数据成员指定。从http://en.cppreference.com/w/cpp/language/bit_field的第一行:
声明A 类数据成员具有显式大小[...]
您需要将您的位字段包裹在结构中。示例:
#include <cstdint>
struct bool_pack {
uint8_t b0 : 1, b1 : 1, b2 : 1, b3 : 1, b4 : 1, b5 : 1, b6 : 1, b7 : 1;
};
int main()
{
bool_pack b = {};
if (!b.b0) {
// do something
b.b0 = true;
}
}
有一个更方便的标准库类型std::bitset
您应该考虑使用。示例:
#include <bitset>
int main()
{
std::bitset<8> b;
if (!b[0]) {
// do something
b[0] = true;
}
}
相关文章:
- 专门用于"direct"函数类型(与函数指针类型相对)
- 我如何专门用于以下目的
- 父可变参数函数模板专门用于子级
- 模板是否可以专门用于标准库类而不包含该类的标头?
- 如何使用用户输入正确修改 2D 数组中的字符数组元素?专门用于电影院座位
- 将 std 库函数专门用于用户定义类型的shared_ptr是否合法?
- (C )正在创建专门用于处理所有其他自定义对象的类/对象一种处理项目的正确方法
- 使用专门用于分层类构造的模板
- 专门针对大型类型的常量T&和用于简单类型的T的模板
- 如何专门用于模板模板参数
- 为什么这个enable_if函数模板不能专门用于VS2017?
- std::lower_bound 不是专门用于红黑树迭代器的任何技术原因吗?
- 专门用于布尔值的真假
- std::fill, std::copy 是专门用于 std::vector 的<bool>吗?
- 为什么std::hash不专门用于std::reference_wrapper
- 专门用于日志记录的Functor
- 如何将C++模板专门用于所有32位POD类型
- 如何将这个类模板专门用于std::string
- 专门用于常量字符 * 的模板是否也接受字符 *
- 3d矢量算术模板(如何专门用于int和float版本)