Вы не можете назначить C массивов таким способом, но вы можете назначить std::array
s и std::vector
s:
auto a1 = std::vector<std::vector<int>>{{1, 1}, {1, 2}};
auto a2 = a1;
(std::array
s работают так же, но более подробный, так как вам нужно указать количество измерений в качестве аргументов шаблона.)
В этом примере выполняется построение копии, а не присваивание, что вам и нужно использовать в 99% случаев. Назначение также работает, точно так же.
Стоит отметить, что это , а не многомерный массив - это вложенный массив . В C ++ нет собственного типа для многомерных массивов, но их предоставляют различные библиотеки (в основном для численных вычислений), например Eigen и xtensor . Они могут показаться внешне похожими на вложенные массивы, но их API и их реализация существенно различаются. Примечательно, что они располагаются непрерывно в памяти, а вложенные векторы отсутствуют (хотя вложенные std::array
s равны ).