在C ++中,我有一个长度为[len]的uint8缓冲区。分配单个缓冲区时,我这样做:
uint8 *buffer= new uint8[len];
分配此类缓冲区数组的语法是什么?这给了我一个语法错误:
uint8** buffers = new uint8[len]*[bufferCount];
答案 0 :(得分:2)
初始化二维数组的方式如下:
uint8** buffers = new uint8*[bufferCount];
for (int i = 0; i < bufferCount; i++)
buffers[i] = new uint8[len];
答案 1 :(得分:1)
#include <vector>
using byte_vector = std::vector<uint8_t>;
using byte_vector_vector = std::vector<byte_vector>;
// example of a 1-dimension vector
auto v1 = byte_vector(len, inital_value);
// example of a [2, len] vector
auto v_of_v = byte_vector_vector {
byte_vector(len, initial_value),
byte_vector(len, initial_value)
};
// print the uint8 at (0,1)
std::cout << v_ov_v[0][1] << std::endl;
答案 2 :(得分:1)
你问了
分配此类缓冲区数组的语法是什么?
您可以使用:
uint8** buffers = new uint8*[bufferCount];
但是,只有在出于某种原因绝对不能选择std::vector
时才使用此功能。