示例代码片
//------------1
for (auto c: text) //text为string类型
cout << c << ' ' << endl;
//------------2
for (auto &c: text) //text为string类型
cout << c << ' ' << endl;
//------------3
for (const auto &c: text) //text为string类型
cout << c << ' ' << endl;
说明
在第一种写法中,范围for循环语句会将text中的元素逐一拷贝给对象c,因为text是string对象,可能非常大,那么这种拷贝操作无疑会对代码性能造成影响。而第二种写法中使用了引用,由于引用本身并不是对象,所以不占用内存,对引用的所有操作直接作用到所引用的对象本身上,这样就避免了对元素的拷贝。再者,当我们不需要对text做写操作时(既无需更改text中的元素),使用第三种写法将c声明为对常量的引用是一种好的编程习惯。