Какой тип данных следует использовать в С++ при работе с бинарными блоками данных?
В то время как string
следует использовать для работы со строками, я хотел бы знать, какую структуру вы должны использовать в С++ при работе с блоками данных.
Я спрашиваю об этом, потому что было бы лучше использовать один параметр вместо передачи char* data
и size_t size
(или настраиваемой структуры).
Ответы
Ответ 1
std::vector<unsigned char>
или, предпочтительно,
std::vector<std::uint8_t>
(В С++ 11, uint8_t
можно найти в <cinttypes>
. Более старые компиляторы, но не MSVC, могут иметь заголовок C99 <inttypes.h>
. Если ваши данные представляют собой последовательность из 16-разрядных единиц, используйте uint16_t
и т.д.)
Если размер блоков данных известен во время компиляции, std::array
подходит; он тратит меньше места, чем vector
.
Ответ 2
В STL есть несколько контейнеров, а не только vector
. Посмотрите и выберите, что подходит вашей ситуации.
Ответ 3
Вышеприведенные решения хороши, но это решение может быть хорошим: