gpt4 book ai didi

c++ - 如何在 C++ 中的堆上使用位集?

转载 作者:行者123 更新时间:2023-12-01 13:21:31 24 4
gpt4 key购买 nike

如果我在堆栈上使用位集,我可以执行以下操作:

std::bitset<8> bset_s;
bset_s.flip(1);

std::cout << "Bitset on stack: " << bset_s << std::endl;
std::cout << "Element 1: " << bset_s[1] << std::endl;
输出:
Bitset on stack: 00000010
Element 1: 1
但是当我尝试在堆上分配位集时:
std::bitset<8> * bset;
bset = new std::bitset<8>;

bset->flip(1);


std::cout << "Bitset on heap: " << * bset << std::endl;
std::cout << "Element 1: " << bset[1] << std::endl;
输出:
Bitset on heap: 00000010
Element 1: 00000000
如果我尝试访问第二位,我会得到一个空的 Bitset 而不是“1”。我究竟做错了什么?

最佳答案

bset[1]相当于 *(bset + 1)bset是一个指针。这是取消引用您不拥有的内存,因此程序的行为是未定义的。
您需要 (*bset)[1] .

关于c++ - 如何在 C++ 中的堆上使用位集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63508512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com