这是我的代码。从打印结果来看,没有什么区别,那么&符号在这里起什么作用呢?
#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");
}
Run Code Online (Sandbox Code Playgroud)
自动,for(auto x : range):此用法将创建范围内每个元素的副本。
auto &, for(auto& x : range):当要修改范围内的元素时(不进行代理类引用处理),使用auto&。
ii是一个引用,所以在循环体内,如果ii修改了,相应的元素a也会被修改。
jj不是参考。在每个循环中,它是相应元素的副本。它的修改不会影响 中对应的元素a。由于每个循环都会创建一个副本,因此会带来系统开销。
如果你想保证 中的数据a不被修改,并且想提高效率,可以使用表单const auto & ii : a。
| 归档时间: |
|
| 查看次数: |
1837 次 |
| 最近记录: |