当前位置:   article > 正文

c++ 基于范围的for循环详解_c++ for range

c++ for range

在for循环中基于复杂对象我们使用引用,这样可以避免对象拷贝,提升性能。

如果确认不会修改引用对象,请在前面加上const限定符。帮助编译器生成更加高效的代码。

如果是基础类型,直接使用值即可。

C++11引入了一种更简洁、统一的循环结构——基于范围的for循环(Range-based for loop),用于遍历容器和数组。让我们详细了解一下这个特性:

  1. 传统的for循环

    • 在C++11之前,我们使用以下结构来遍历数组或容器:
    1. for (表达式1; 表达式2; 表达式3) {
    2. // 循环体
    3. }

    例如,下面的示例演示了如何使用传统的for循环遍历数组和容器:

    1. #include <iostream>
    2. #include <vector>
    3. #include <string.h>
    4. using namespace std;
    5. int main() {
    6. char arc[] = "C++11";
    7. int i;
    8. // 遍历普通数组
    9. for (i = 0; i < strlen(arc); i++) {
    10. cout << arc[i];
    11. }
    12. cout << endl;
    13. // 遍历vector容器
    14. vector<char> myvector(arc, arc + 6);
    15. vector<char>::iterator iter;
    16. for (iter = myvector.begin(); iter != myvector.end(); ++iter) {
    17. cout << *iter;
    18. }
    19. return 0;
    20. }

    程序执行结果为:C++11

  2. 基于范围的for循环

    • C++11引入了一种更简洁的语法格式:
    1. for (declaration : expression) {
    2. // 循环体
    3. }

    其中:

    • declaration:定义一个变量,该变量的类型为要遍历序列中存储元素的类型。可以使用auto关键字自动推导变量类型。
    • expression:要遍历的序列,可以是普通数组、容器,或者使用大括号初始化的序列。

    下面的示例展示了如何使用基于范围的for循环遍历之前定义的arc数组和myvector容器:

    1. #include <iostream>
    2. #include <vector>
    3. using namespace std;
    4. int main() {
    5. char arc[] = "C++11";
    6. // 遍历普通数组
    7. for (char ch : arc) {
    8. cout << ch;
    9. }
    10. cout << '!' << endl;
    11. // 遍历vector容器
    12. vector<char> myvector(arc, arc + 6);
    13. for (auto ch : myvector) {
    14. cout << ch;
    15. }
    16. cout << '!';
    17. return 0;
    18. }

    程序执行结果为:C++11!

    注意:

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/795574
推荐阅读
相关标签
  

闽ICP备14008679号