我認爲std::bitset<0> myBS
的尺寸應該是0
,而std::cout << sizeof(myBS)
可以打印出1
。任何人都可以解釋我嗎?這是否意味着一個bitset永遠不能爲空?C++ - std :: bitset的大小<0>?
-1
A
回答
3
sizeof
在C++中永遠不會返回零。一個對象的大小至少是一個(除了空基類的情況)。如果不是這種情況,那麼你可以有一個對象數組,其中所有的對象將被存儲在相同的地址。不管怎樣,sizeof(std::bitset<N>)
的值實際上是不相關的。 std::bitset<N>
類提供接口到N
位的序列。如果N
= 0,則該標準保證該接口恰好爲0位。無論對象有多大都是如此。無論該對象有多少位,都只能使用其中的0個位。
+0
謝謝你,'interface'就是我一直在尋找的單詞。我誤解了位集中位元素的數量作爲大小,而它是基數。 – scmg
相關問題
- 1. 如何在編譯時找出std :: bitset的大小
- 2. 如何訪問packed_bits <>作爲std :: bitset <>的切片?
- 3. 在std :: bitset :: operator []中創建的std :: bitset :: reference對象的生存期?
- 4. 我的Bitset的大小是多少?
- 5. 將dynamic_bitset轉換爲std :: bitset
- 6. 爲什麼std :: swap不能使用std :: bitset <n>的內容?
- 7. C++ std :: vector <std :: shared_ptr>
- 8. 類中的C++ bitset錯誤
- 9. 爲什麼std :: bitset <8>變量無法處理11111111?
- 10. 爲什麼std :: bitset <8>變量無法處理11111111?
- 11. C++循環std :: vector <std :: map <std :: string,std :: string>>
- 12. std :: bitset中的元素數量是否有最大值?
- 13. std :: array <T, N>的大小是否保證等於T [N]的大小?
- 14. 輸出的C++ bitset問題
- 15. 將bitset <a>轉換爲signed int,其中<32
- 16. 限制std :: set的大小
- 17. Bitset程序C++
- 18. 爲什麼「std :: vector <bool>」16字節的大小?
- 19. 巨大的程序大小C++與std :: regex
- 20. 爲什麼std :: bitset :: at()拋出out_of_range?
- 21. 將std :: bitset分爲兩部分?
- 22. 使用std :: bitset進行雙重表示
- 23. 如何在bitset中存儲較大的二進制數(C++)
- 24. 如何返回C++中的bitset值?
- 25. std ::列表固定大小
- 26. 爲什麼我的BitSet的大小爲0?
- 27. 使用std :: array的代碼大小
- 28. std ::大小爲零的數組
- 29. 爲什麼std :: bitset的位以相反的順序?
- 30. 如何在C++中將二進制文件加載到「vector <vector < bitset<32>>」中?
這意味着一個C++對象永遠不會少於1個字節。該標準保證它。 –
'sizeof'在標準C++中永遠不會產生0 –
「可以爲空」在C++中是一個危險的術語。在像SQL和Java這樣的語言中,對象可以是NULL。在C++中,情況並非如此。 _Pointers_可以爲空,就是這樣。整數可以是零,字符串可以是空的,但都不是「空」。 – MSalters