赞
踩
在for循环中基于复杂对象我们使用引用,这样可以避免对象拷贝,提升性能。
如果确认不会修改引用对象,请在前面加上const限定符。帮助编译器生成更加高效的代码。
如果是基础类型,直接使用值即可。
C++11引入了一种更简洁、统一的循环结构——基于范围的for循环(Range-based for loop),用于遍历容器和数组。让我们详细了解一下这个特性:
传统的for循环:
- for (表达式1; 表达式2; 表达式3) {
- // 循环体
- }
例如,下面的示例演示了如何使用传统的for循环遍历数组和容器:
- #include <iostream>
- #include <vector>
- #include <string.h>
- using namespace std;
-
- int main() {
- char arc[] = "C++11";
- int i;
-
- // 遍历普通数组
- for (i = 0; i < strlen(arc); i++) {
- cout << arc[i];
- }
- cout << endl;
-
- // 遍历vector容器
- vector<char> myvector(arc, arc + 6);
- vector<char>::iterator iter;
- for (iter = myvector.begin(); iter != myvector.end(); ++iter) {
- cout << *iter;
- }
-
- return 0;
- }
程序执行结果为:C++11
基于范围的for循环:
- for (declaration : expression) {
- // 循环体
- }
其中:
declaration
:定义一个变量,该变量的类型为要遍历序列中存储元素的类型。可以使用auto
关键字自动推导变量类型。expression
:要遍历的序列,可以是普通数组、容器,或者使用大括号初始化的序列。下面的示例展示了如何使用基于范围的for循环遍历之前定义的arc
数组和myvector
容器:
- #include <iostream>
- #include <vector>
- using namespace std;
-
- int main() {
- char arc[] = "C++11";
-
- // 遍历普通数组
- for (char ch : arc) {
- cout << ch;
- }
- cout << '!' << endl;
-
- // 遍历vector容器
- vector<char> myvector(arc, arc + 6);
- for (auto ch : myvector) {
- cout << ch;
- }
- cout << '!';
-
- return 0;
- }
程序执行结果为:C++11!
注意:
'\\0'
(字符串的结束标志)。{1, 2, 3, 4, 5}
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。