Вы не можете назначить int*
для std::unique_ptr<int[]>
, что является причиной вашей ошибки.Правильный код:
a[i] = std::unique_ptr<int[]>(new int[2]);
Тем не менее, piokuc верен, поэтому очень редко можно использовать unique_ptr
для массивов, поскольку именно для этого нужны std::vector
и std::array
, в зависимости от того,известен заранее.
//make a 5x2 dynamic jagged array, 100% resizable any time
std::vector<std::vector<int>> container1(5, std::vector<int>(2));
//make a 5x2 dynamic rectangular array, can resize the 5 but not the 2
std::vector<std::array<2, int>> container1(5);
//make a 5x2 automatic array, can't resize the 2 or 5 but is _really fast_.
std::array<5, std::array<2, int>> container;
Все они могут быть инициализированы и использованы точно так же, как код, который у вас уже был, за исключением того, что их проще построить, и вам не нужно их уничтожать.