C++98和C++11的for循环使用对比

1、C++98 中的 传统for 循环

  • 语法结构:这种形式的 for 循环由三个部分组成:初始化语句(int i = 0)、循环条件(i < 10)和迭代语句(i++)。通常用于遍历一个已知大小的循环范围。
  • 使用场景:适用于需要控制循环次数、迭代索引或在循环内修改循环变量的情况。
(1)传统for循环遍历普通元素或数组

  示例1:遍历普通元素

for (int i = 0; i < 3; i++) {
    cout << i << " ";
}

  示例2:使用传统的 for 循环遍历数组

#include <iostream>
using namespace std;

int main() {
    // 使用传统的 for 循环遍历数组
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);

    for (int i = 0; i < size; i++) {
        cout << arr[i] << " ";
    }

    cout << endl;
    return 0;
}
(2)传统的 for 循环遍历vector 容器
  • 通过传统的 for 循环或者使用迭代器来遍历 vector 等容器。
  • 使用 vec[i] 可以访问元素,vec.begin()vec.end() 可以通过迭代器遍历容器中的元素。
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};

    // 使用传统的 for 循环访问 vector 元素
    for (int i = 0; i < vec.size(); i++) {
        cout << vec[i] << " ";  // 通过索引访问元素
    }

    cout << endl;

    // 使用迭代器遍历 vector
    for (vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
        cout << *it << " ";  // 通过迭代器访问元素
    }

    cout << endl;

    return 0;
}

2、C++11中的范围-based for 循环

C++11 引入了范围-based for 循环,这是一种更加简洁且易于使用的语法。该语法使得程序员无需手动管理索引或迭代器,便可直接遍历容器中的每个元素。

for (int i : 容器) {
        cout << i << " ";  // 自动遍历容器中的所有元素
}

for (int i : vec) {
        cout << i << " ";  // 自动遍历容器中的元素
}
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};

    // 使用范围-based for 循环访问 vector 元素
    for (int i : vec) {
        cout << i << " ";  // 自动遍历容器中的元素
    }

    cout << endl;

    return 0;
}

在 C++11 中,程序员不再需要显式地声明索引或迭代器,而是通过范围-based for 循环直接遍历容器中的每一个元素。int i : vec 的语法简化了容器遍历的过程,并且使代码更加清晰。

3、主要区别 

特性范围-based for 循环传统 for 循环
语法简洁度非常简洁,自动遍历容器元素较为冗长,需要手动管理索引 i
适用性适用于容器遍历,尤其是不需要访问索引时适用于控制循环次数或需要访问索引时
支持版本C++11 及之后的版本C++98 及更早版本
是否支持修改容器元素可以修改元素(如果容器支持)可以修改元素
是否支持控制迭代条件不支持,自动遍历容器中的所有元素支持自定义控制循环的条件  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值