C++中迭代器的学习笔记

作用:

        迭代器的作用是充当容器中元素的指针,它提供了一种方便访问容器中元素内容的方式。通过迭代器,我们可以遍历容器中的元素,读取或修改元素的值。

        不同类型的容器有不同种类的迭代器,但它们都为我们提供了统一的接口来遍历容器元素,无需关心底层实现的细节。迭代器可以在容器中自由移动,使我们能够灵活地操作容器中的元素,实现对容器的各种操作。因此,迭代器是几乎所有常见容器的核心组成部分。

使用方式:

        定义迭代器:

                根据容器类型选择相应的迭代器类,并定义一个迭代器变量。

                例如:可以使用 std::vector<int>::iterator 来定义一个指向 vector<int> 容器的迭代器。

        初始化迭代器:

                使用容器的成员函数 begin() 或 end() 来初始化迭代器,分别指向容器的第一个元素和超过容器尾部的一个位置。

                例如,可以使用 auto it = myVector.begin() 来初始化一个vector<int>容器的迭代器。

        遍历容器:

                使用迭代器进行循环遍历容器中的元素。可以使用循环语句,例如 for 或 while,结合迭代器的 != 或 ++ 操作来控制循环遍历。

                在每次循环中,可以通过解引用操作符 * 来获取迭代器指向的当前元素。

        对容器进行操作:

                利用迭代器可以直接修改容器中的元素的值或进行其他操作,例如插入、删除等。可以使用迭代器的成员函数,如 *it = value 来修改元素值。

        需要注意的是:

                迭代器的有效范围是从指向容器的第一个元素开始,到超过容器尾部的位置结束。因此,在使用迭代器访问元素之前,应确保容器不为空,并检查迭代器是否已达到容器的末尾位置。此外,对于一些容器类型,比如关联容器(如 std::map)的迭代器是按有序的方式进行遍历的。还有一些高级应用中,可以使用迭代器算法来进行排序、查找、拷贝等操作。

代码示例:

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<std::string, int> myMap = {{"Alice", 20}, {"Bob", 25}, {"Charlie", 30}};

    // 定义迭代器
    std::map<std::string, int>::iterator it;

    // 遍历容器并输出键值对
    std::cout << "容器中的键值对:" << std::endl;
    for (it = myMap.begin(); it != myMap.end(); ++it) {
        std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
    }

    return 0;
}

运行结果:

容器中的键值对:
Key: Alice, Value: 20
Key: Bob, Value: 25
Key: Charlie, Value: 30

        在上述示例中,我们首先定义了一个std::map容器myMap,并初始化了一些键值对。然后我们定义了一个迭代器it,并初始化为myMap.begin(),指向容器的第一个键值对。接下来,在for循环中,我们判断迭代器it是否已达到容器的末尾位置myMap.end(),如果没有,则通过it->first访问迭代器指向的当前键,通过it->second访问迭代器指向的当前值,并输出键值对。最后,我们使用迭代器的++操作符,将迭代器递增到容器的下一个键值对,并重复这个过程,直到迭代器达到容器的末尾位置为止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值