簡體   English   中英

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

[英]How can I use a bitset on the heap in C++?

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

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;

Output:

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;

Output:

Bitset on heap: 00000010
Element 1: 00000000

如果我嘗試訪問第二位,我會得到一個空的 Bitset 而不是“1”。 我究竟做錯了什么?

bset[1]等同於*(bset + 1)因為bset是一個指針。 這是取消引用您不擁有的 memory,因此程序的行為是未定義的。

你需要(*bset)[1]

暫無
暫無

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

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