Я думал, что размер std::bitset<0> myBS
будет 0
, а std::cout << sizeof(myBS)
распечатать 1
. Может ли кто-нибудь объяснить мне это? Означает ли это, что битбит никогда не может быть нулевым?C++ - размер std :: bitset <0>?
ответ
sizeof
не может вернуть ноль в C++. Размер объекта как минимум один (за исключением пустых базовых классов). Если бы это было не так, тогда у вас мог бы быть массив объектов, где все объекты будут храниться по одному и тому же адресу.
Значение sizeof(std::bitset<N>)
на самом деле не имеет отношения к делу. Класс std::bitset<N>
предоставляет интерфейс последовательности N
бит. Если N
= 0, стандарт гарантирует, что этот интерфейс равен точно 0 бит. Это верно независимо от того, насколько большой объект. Независимо от того, сколько бит находится в этом объекте, вы можете использовать только 0 из них.
спасибо, 'интерфейс' - это слово, которое я искал. Я неверно истолковал количество бит элементов в битете как размер, в то время как это мощность. – scmg
- 1. Получить размер std :: bitset без экземпляра
- 2. Преобразование между std :: bitset и std :: vector <bool>
- 3. Какова производительность std :: bitset?
- 4. Инициализация C++ std :: bitset во время компиляции
- 5. Как узнать размер std :: bitset во время компиляции
- 6. `std :: bitset :: reference` оператор присваивания?
- 7. convert dynamic_bitset to std :: bitset
- 8. Эмуляция std :: bitset в CUDA
- 9. Почему std :: bitset :: reference :: operator ~?
- 10. Почему std :: bitset :: size non-static
- 11. Срок службы std :: bitset :: объект ссылки, созданный в std :: bitset :: operator []?
- 12. C++ Bitset << оператор не работает. Указатель на переменную BITSET
- 13. Как я могу увеличить std :: bitset
- 14. Очень длинный булевский массив/std :: bitset
- 15. Использование класса enum со стандартом std :: bitset
- 16. Диапазоны испытаний битов в std :: bitset
- 17. напишите std :: bitset в двоичный файл и загрузите файл в std: bitset
- 18. Подписанный int from bitset <n>
- 19. C++ Как назначить входное значение аргументу std :: bitset?
- 20. Есть ли встроенный битрейт, похожий на std :: bitset из C++?
- 21. Почему стандарт C++ указывает деструктор для std :: bitset :: reference?
- 22. Почему std :: swap не работает с std :: bitset <n>?
- 23. Использует unsigned int вместо std :: vector <bool> или std :: bitset рекомендуемая практика?
- 24. std :: размер и размер: реализация в C
- 25. split std :: bitset в двух половинах?
- 26. std :: bitset :: at() исчезают в VS2015
- 27. Конкатенация boost :: dynamic_bitset или std :: bitset
- 28. `std :: bitset` с и без пограничных проверок
- 29. Использование std :: bitset для двойного представления
- 30. Используйте std :: bitset для создания двоичного файла
Это означает, что объект C++ никогда не может быть меньше 1 байт. Стандарт гарантирует это. –
'sizeof' никогда не может дать 0 в стандартном C++ –
« может быть null »является опасным термином в C++. В таких языках, как SQL и Java, объекты могут быть NULL. В C++ это не так. _Pointers_ может быть нулевым, и это все. Целые числа могут быть равны нулю, а строки могут быть пустыми, но ни один из них не равен «null». – MSalters