Я планирую создать класс чисел. Цель состоит в том, чтобы хранить любое количество чисел, не беспокоясь о том, чтобы получить слишком много (например, с помощью int или long). Но в то же время не слишком много ИСПОЛЬЗОВАНИЯ. Например:
Если у меня есть данные, которые действительно нуждаются в 1-10, мне не нужны int (4 байта), short (2 байта) или даже char (1 байт). Так зачем выделять так много?
Если я хочу хранить данные, которые требуют чрезвычайно большого объема (только целые числа в этом сценарии), например, за миллиарды, я не могу.
Моя цель - создать числовой класс, который может справиться с этой проблемой, как это делают строки, подгоняя размер под число. Но прежде чем начать, мне было интересно ..
bitset <1>, bitset - это шаблонный класс, который позволяет мне минимизировать биты в C ++, весьма полезно, но эффективно ли это ?, bitset <1> определит 1 бит, но я хочу сделать их массив ? C ++ может выделить минимум байтов, выделяет ли bitset <1> байт и предоставляет ли 1 бит этого байта? в таком случае я бы предпочел создать свой класс чисел с беззнаковыми символами *.
unsigned char, или BYTE содержит 8 байтов, для любого значения от 0 до 256 потребуется только один, для большего потребуется два, а затем 3, он будет просто расширяться при необходимости в байтовых интервалах, а не в битовых интервалах.
Как вы думаете, БОЛЬШЕ эффективнее? Биты были бы, если бы битрейт фактически выделил 1 бит, но у меня есть ощущение, что это даже невозможно. На самом деле, может быть более эффективно выделять в байтах до тех пор, пока 4 байта (32 бита) на 32-битном процессоре 32-битное выделение не будет наиболее эффективным, поэтому я буду использовать 4 байта за раз с тех пор.
По сути, мой вопрос: что вы думаете? как я должен идти об этой реализации, bitset <1> или беззнаковый символ (или BYTE) ??