2015-01-14 3 views
1

В C++ у меня есть буфер uint8 длины [len]. При распределении одного буфера я делаю это:C++ массив буферов uint8

uint8 *buffer= new uint8[len]; 

В чем заключается синтаксис выделения массива таких буферов? Это дает мне ошибку синтаксиса:

uint8** buffers = new uint8[len]*[bufferCount]; 
+4

'uint8 * буферы [bufferCount]', а затем сделать точку указатели на массивы обновленного. Или используйте вектор и сохраните себе много будущей боли. – juanchopanza

+4

Правильный синтаксис: 'std :: vector > (bufferCount);' –

+0

@JerryCoffin любая причина использования 'basic_string', а не другого' vector'? –

ответ

2

Способ инициализации 2d массив следующим образом:

uint8** buffers = new uint8*[bufferCount]; 
for (int i = 0; i < bufferCount; i++) 
    buffers[i] = new uint8[len]; 
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; 
1

Вы просили

What's the syntax for allocating an array of such buffers?

Вы можете использовать:

uint8** buffers = new uint8*[bufferCount]; 

Однако использовать это только если std::vector абсолютно не вариант для некоторая причина.

Смежные вопросы