Я знаю, что мы можем использовать следующий код для печати элементов массива, например:
int a[] = {1,2,3,4,5};
for (int el : a) {
cout << el << endl;
но что, если наш массив имеет два или более измерения? как следует изменить цикл for для печати массивов более высокого измерения? Например:
int b[2][3] = {{1,2,3},{3,4,5}};
Спасибо :)
Я написал в заголовке, что это C++





Как насчет:
int b[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
for (auto& outer : b)
{
for (auto& inner : outer)
{
std::cout << inner << std::endl;
}
}
не могли бы вы объяснить, почему вы использовали здесь "авто"? когда я использую "int" вместо этого, он просто показывает адреса памяти, но с auto это работает !!
В цикле outer требуются auto и &, чтобы массив не распадался на указатель. Вы должны получить ошибку компиляции, если попытаетесь использовать int во внешнем цикле. Во внутреннем цикле вы можете использовать int, и все должно быть в порядке. См. Диапазон основан на
Цикл for на основе диапазона: Ниже простой пример, который показывает, как распечатать 2d массив с помощью цикл for на основе диапазона.
unsigned int arr[2][3] = { {1,2,3}, {4,5,6} }; // 2 rows, 3 columns
for (const auto& row: arr) // & - copy by reference; const - protect overwrite;
{
for (const auto& col : row)
{
std::cout << col << " "; // 1 2 3 4 5 6
}
}
Точно так же цикл на основе диапазона для 2d вектор:
vector<vector<int>> matrix { {1,2,3}, {4,5,6} }; // 2 rows, 3 columns
for (const auto& row : matrix) // & - copy by reference; const - protect overwrite;
{
for (const auto& col : row)
{
std::cout << col << " "; // 1 2 3 4 5 6
}
}
на каком языке нужен код?