- 此问题在此处已有答案**:
Why does auto works differently in "range for" in 2D and 1D arrays in C++(4个答案)
昨天关门了。
我很好奇为什么我们要用这种方式来遍历多维数组
for (auto& row : mat1)
{
for (int& elements : row)
{
cin >> elements;
}
}
当我们创建一个名为elements的临时变量来遍历行并获取每个值时,为什么要使用&(pass by ref)以及for(auto & row:mat1)谁能详细解释一下这整个部分吗?
using namespace std;
int main()
{
const int row{ 3 }, col{ 3 };
array<array<int, col>, row > mat1;
cout << "Enter matrix 1 elements: ";
for (auto& row : mat1)
{
for (int& elements : row)
{
cin >> elements;
}
}
for (auto& row : mat1)
{
for (int& elements : row)
cout << elements << " ";
cout << endl;
}
1条答案
按热度按时间nkoocmlb1#
如果您不使用引用,那么您将制作数据的“副本”。
而且如果您制作了一个副本(按 value 迭代)而不是使用引用,那么您将只修改本地副本,而不是原始数据。
当然,这是针对输入环路的,其中有
在输出循环中,不需要
int
元素本身的引用,但是我建议对数组使用const
引用,因为否则会产生开销很大的副本。因此,在输出循环中: