今天来认识c++里面的迭代器
C++迭代器(Iterator)是一种用于遍历容器(如数组、向量、链表等)中元素的抽象概念。它允许你通过简单的接口在容器中移动,并访问容器中的元素,而无需了解底层数据结构的细节。迭代器提供了一种统一的方式来访问不同类型容器的元素,使得代码更加灵活和可复用。
在C++中,标准库(STL)提供了许多不同类型的迭代器,每种容器都有对应的迭代器。以下是一些常见的STL容器迭代器:
-
begin()
和end()
:begin()
:返回指向容器第一个元素的迭代器。end()
:返回指向容器最后一个元素后面的虚拟元素的迭代器,也称为尾后迭代器。
-
单向迭代器(Forward Iterator):
- 仅允许向前遍历容器中的元素。
- 适用容器:
std::forward_list
(单向链表)。
-
双向迭代器(Bidirectional Iterator):
- 允许向前和向后遍历容器中的元素。
- 适用容器:
std::list
(双向链表)。
-
随机访问迭代器(Random Access Iterator):
- 允许以常数时间访问容器中的任意元素。
- 支持
+
和-
操作,可以跳跃性地访问元素。 - 适用容器:
std::vector
、std::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博客
标签:std,容器,13,myVector,迭代,auto,元素,c++,day From: https://www.cnblogs.com/jszs0013/p/17569872.html