我认为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