《C++ primer 第五版》读书小笔记
for each 与 c++11中的auto有两种使用方法:
- for(auto x : a) : 其中x只是等同于a中元素的值,而并非a中元素本身,所以对于x的修改不会同步到原有的a数组上。
- for(auto &x : a):其中x是原有a数组中元素的引用,对于x的修改等同于修改a数组中的元素。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;++i)
{
a[i]=9-i;
}
cout<<"原始序列: ";
for(auto x : a)
{
cout<<x<<" ";
}
cout<<endl;
int b = 0;
for(auto x : a)
{
x=b++;
}
cout<<"for(auto x : a)改动后: ";
for(auto x : a)
{
cout<<x<<" ";
}
cout<<endl;
b = 0;
for(auto &x : a)
{
x=b++;
}
cout<<"for(auto &x : a)改动后: ";
for(auto x : a)
{
cout<<x<<" ";
}
cout<<endl;
return 0;
}
输出结果:
原始序列: 9 8 7 6 5 4 3 2 1 0
for(auto x : a)改动后: 9 8 7 6 5 4 3 2 1 0
for(auto &x : a)改动后: 0 1 2 3 4 5 6 7 8 9
欢迎评论和指正!