c++ day 13

今天来认识c++里面的迭代器

C++迭代器(Iterator)是一种用于遍历容器(如数组、向量、链表等)中元素的抽象概念。它允许你通过简单的接口在容器中移动,并访问容器中的元素,而无需了解底层数据结构的细节。迭代器提供了一种统一的方式来访问不同类型容器的元素,使得代码更加灵活和可复用。

在C++中,标准库(STL)提供了许多不同类型的迭代器,每种容器都有对应的迭代器。以下是一些常见的STL容器迭代器:

  1. begin()end()

    • begin():返回指向容器第一个元素的迭代器。
    • end():返回指向容器最后一个元素后面的虚拟元素的迭代器,也称为尾后迭代器。
  2. 单向迭代器(Forward Iterator):

    • 仅允许向前遍历容器中的元素。
    • 适用容器:std::forward_list(单向链表)。
  3. 双向迭代器(Bidirectional Iterator):

    • 允许向前和向后遍历容器中的元素。
    • 适用容器:std::list(双向链表)。
  4. 随机访问迭代器(Random Access Iterator):

    • 允许以常数时间访问容器中的任意元素。
    • 支持+-操作,可以跳跃性地访问元素。
    • 适用容器:std::vectorstd::deque 和普通数组等。

使用迭代器遍历容器的通用方式是通过循环,如下所示:

#include <iostream>
#include <vector>

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

    // 使用迭代器遍历 vector
    for (std::vector<int>::iterator it = myVector.begin(); it != myVector.end(); ++it) {
        std::cout << *it << " "; // 输出当前元素值
    }

    return 0;
}

在C++11中引入了更便捷的迭代器访问方式,使用auto关键字可以自动推导迭代器类型,如下所示:

#include <iostream>
#include <vector>

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

    // 使用auto关键字简化迭代器类型声明
    for (auto it = myVector.begin(); it != myVector.end(); ++it) {
        std::cout << *it << " "; // 输出当前元素值
    }

    return 0;
}

除了使用++来移动迭代器外,还可以使用其他运算符来进行定位和遍历。例如,--用于向后移动双向迭代器,+=-=用于在随机访问迭代器中跳跃性地移动。既然提到c++的特性auto了 那我今天就来复习复习auto的有关概念

写在了另一个博客里面了(32条消息) c++里面的auto类型_开摆就摆的博客-CSDN博客

 

posted @ 2023-07-20 22:21  芜湖大厨师  阅读(7)  评论(0编辑  收藏  举报