2> array{ 1,2,3,4 };
std::array<std::array<int, 2>, 2> array2;
for (std::size_t i = 0; i < 4; ++i)
{
*(i + array2[0].data()) = *(i + array[0].data());
}
for (std::size_t i = 0; i < 4; ++i)
{
std::cout << *(i + array2[0].data()) << ' ';
}
}
Это говно
Любой нмерный массив можно представить, как линейную развертку, тогда копирование std::copy
Да, конечно. Я сейчас думал развернуть как минимум через обращение в std::array::operator[] и собирая все данные в одну std::array финального размера
А разве в С++ можно указатель из первого массива использовать для итерации по всему массиву массивов?
Рассчитывать линейный индекс по нмерным координатам, представление же всегда остается одномерным
Ну, std::copy я имел ввиду применять для вариаций размерностей, когда их мощность одинакова: 3x2, 2x3, 1x6, 6x1
Это понятно, но мне казалось, что не получится так скопировать из 2x3 в 6x1, потому что нельзя инкрементировать через границы массива
Так если в основе линейный массив, о каких границ речь?
Обсуждают сегодня