这是我的密码。根据打印结果,没有差别,那么&符号在这里播放什么呢?
#include <stdio.h>
#include <iostream>
#include <Windows.h>
int main(void)
{
std::cout << "Print test data\n" << std::endl;
int a[5] = { 23,443,16,49,66 };
for (auto &ii : a)
{
std::cout << "auto ii: " << ii << std::endl;
}
printf("\n");
for (auto jj : a)
{
std::cout << "auto jj: " << jj << std::endl;
}
system("pause");
}发布于 2019-08-21 07:15:20
Auto,for(auto x : range):此用法将创建范围的每个元素的副本。
auto &,for(auto& x : range):当您想要在范围内修改元素(没有代理类引用处理)时,请使用Auto &。
ii是一个引用,因此在循环体中,如果修改了ii,则a中的相应元素也将被修改。
jj不是一个参考。在每个循环中,它都是对应元素的副本。它的修改不会影响a中相应的元素。因为每个循环都会创建一个副本,它将带来系统开销。
如果希望确保a中的数据不被修改,并且希望提高效率,则可以使用表单const auto & ii : a。
https://stackoverflow.com/questions/57586221
复制相似问题