【C++知识扫盲】-----初识迭代器

news2024/11/17 2:41:24

1. 迭代器的基本概念

迭代器是一种抽象的指针类型,它使得你可以遍历容器中的元素而不需要知道容器的具体实现细节。迭代器可以用来访问容器中的元素、移动位置、比较位置等。

2. 迭代器的类型

输入迭代器(Input Iterator):只能向前遍历一次容器中的元素。
输出迭代器(Output Iterator):只能向前遍历并修改容器中的元素。
前向迭代器(Forward Iterator):可以多次遍历容器中的元素,并且只能向前遍历。
双向迭代器(Bidirectional Iterator):可以向前和向后遍历容器中的元素。
随机访问迭代器(Random Access Iterator):除了支持前向和双向遍历外,还支持任意位置的直接访问和跳跃。

3. 常用的迭代器操作

3.1. 创建迭代器

迭代器通常通过容器提供的成员函数来获得。例如:

std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int>::iterator it = vec.begin();

3.2. 访问元素

可以使用迭代器来访问容器中的元素:

int value = *it;  // 访问当前迭代器指向的元素

3.3. 移动迭代器

迭代器可以像指针一样进行递增或递减操作:

++it;     // 向前移动
--it;     // 向后移动
it += 3;  // 向前移动3个位置
it -= 2;  // 向后移动2个位置

3.4. 比较迭代器

可以比较两个迭代器是否相等或不相等:

if (it == vec.end()) 
{
    // 迭代器到达容器末尾
}

3.5. 迭代器的应用

迭代器可以与算法库中的函数一起使用,如std::sort、std::find等:

std::sort(vec.begin(), vec.end());  // 使用迭代器对容器进行排序
auto it = std::find(vec.begin(), vec.end(), 3);  // 查找元素3

5. 例子

下面是一个使用迭代器遍历std::vector的例子:

#include <iostream>
#include <vector>

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

    // 使用迭代器遍历
    for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) 
    {
        std::cout << *it << ' ';
    }
    std::cout << std::endl;

    return 0;
}

在这里插入图片描述

在这个例子中,我们使用迭代器从vec.begin()开始遍历,直到vec.end()。每次递增迭代器,*it就访问容器中的下一个元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据Flink(一百一十八):SQL水印操作(Watermark)

文章目录 ​​​​​​SQL水印操作&#xff08;Watermark&#xff09; 一、为什么要有WaterMark 二、​​​​​​​Watermark解决的问题 三、​​​​​​​​​​​​​​代码演示 ​​​​​​SQL水印操作&#xff08;Watermark&#xff09; 一、​​​​​​​为什么要…

出处不详 阻拦投篮

目录 阻拦投篮题目描述背景输入输出数据范围 题解解法 打赏 阻拦投篮 题目描述 背景 现在你得到了一个可以阻拦投篮的宝物&#xff0c;它会在投球后把篮球传送回运动员手上&#xff0c;但是宝物的成功率和篮球在空中运动的时间有关&#xff0c;并且在特定的时间点成功的几率…

152-钓鱼篇邮件钓鱼Ewomail系统网页克隆劫持用户后门上线

承接上节课没讲完的邮件钓鱼和全部的网页钓鱼 #知识点&#xff1a; 1、红队技能-网络钓鱼-邮件系统 2、邮件钓鱼-平台-Gophish&Swaks 3、邮件钓鱼-系统-smtp2go&SendCloud 4、邮件钓鱼-自定义-Ewomail&Postfix 5、网页钓鱼-克隆修改-劫持口令&下载后门 这…

测试工具笔记

性能测试是软件测试中非常重要的一部分&#xff0c;它可以帮助识别软件在高负载条件下的性能瓶颈。市面上有许多性能测试工具&#xff0c;它们各有特点和优势。以下是一些流行的性能测试工具&#xff1a; 1. LoadRunner&#xff1a; 由Micro Focus提供&#xff0c;是一个业界广…

实战外网配置——光猫桥接+路由器PPPoE拨号+防火墙外网链路健康检查+外网流量负载均衡

一、适用场景&#xff1a; 1、企业规模较大时&#xff0c;1条公网带宽流量可能不足&#xff0c;需要用到多条公网出口时。 2、企业有业务需要静态ip映射&#xff0c;但是因静态ip专线价格较高&#xff0c;所以需要拨号光纤承载较多的下行流量。 3、当公网出口有多条链路&#…

[项目][WebServer][CGI机制 设计]详细讲解

目录 1.何为CGI机制&#xff1f;2.理解CGI机制3.CGI接口设计1.ProcessNonCgi2.ProcessCgi 1.何为CGI机制&#xff1f; CGI(Common Gateway Interface)是外部应用程序(CGI程序)与WEB服务器之间的接口标准&#xff0c;是在CGI程序和WEB服务器之间传递信息的过程 2.理解CGI机制 …

鸿蒙OS Service Ability

鸿蒙OS Service模板的Ability基本概念 基于 Service 模板的 Ability&#xff08;以下简称“Service”&#xff09;主要用于后台运行任务&#xff08;如执行音乐播放、文件下载等&#xff09;&#xff0c;但不提供用户交互界面。Service 可由其他应用或 Ability 启动&#xff0…

WEB攻防-PHP特性缺陷对比函数CTF考点CMS审计实例

知识点&#xff1a; 1、过滤函数缺陷绕过&#xff1b; 2、CTF考点与代码审计&#xff1b; 1、赋值 不会对比类型 类型也会对比 2、MD5 在使用比较md5的时候&#xff0c;只要第一位是相等的数字&#xff0c;则会值相等 3、intval 3、 %0a代表换行 4、 6、 7、 代码审计

Amoco:一款针对二进制源码的安全分析工具

关于Amoco Amoco是一款功能强大的二进制源码静态分析工具&#xff0c;该工具基于Python 3.8开发&#xff0c;可以帮助广大研究人员轻松对二进制程序执行静态符号分析。 工具特性 1、一个通用的指令解码框架&#xff0c;旨在减少实现对新架构的支持所需的时间。例如&#xff0c…

.NET内网实战:通过命令行解密Web.config

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧&#xff0c;对内网和后渗透感兴趣的朋友们可以订阅该电子报刊&#xff0c;解锁更多的报刊内容。 02基本介绍 本文内容部分节选自小报童…

ICM20948 DMP代码详解(22)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;21&#xff09; 上一回讲到了inv_icm20948_wakeup_mems函数&#xff0c;没有讲完&#xff0c;本回把余下的内容讲完。为了便于理解和回顾&#xff0c;再次贴出inv_icm20948_wakeup_mems函数代码&#xff0c;在EMD-Cor…

【LLM:Gemini】文本摘要、信息提取、验证和纠错、重新排列图表、视频理解、图像理解、模态组合

开始使用Gemini 目录 开始使用Gemini Gemini简介 Gemini实验结果 Gemini的多模态推理能力 文本摘要 信息提取 验证和纠错 重新排列图表 视频理解 图像理解 模态组合 Gemini多面手编程助理 库的使用 引用 本文概述了Gemini模型和如何有效地提示和使用这些模型。本…

Linux:git

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《Linux&#xff1a;git》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#xff01;&…

基于java网吧管理系统设计与实现

博主介绍&#xff1a;专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…

Pytorch_CPU鸢尾花lirsDataset 尝试

鸢尾花数据集&#xff08;lris Dataset&#xff09; &#xff08;1&#xff09;下载地址【引用】&#xff1a;鸢尾花数据集下载 &#xff08;2&#xff09;鸢尾花数据集特点 茑尾花数据集有150 条样本记录&#xff0c;分为3个类别&#xff0c;每个类别有 50 个样本&#xff…

学习笔记JVM篇(一)

1、类加载的过程 加载->验证->准备->解析->初始化->使用->卸载 2、JVM内存组成部分&#xff08;HotSpot&#xff09; 名称作用特点元空间&#xff08;JDK8之前在方法区&#xff09;用于存储类的元数信息&#xff0c;例如名称、方法名、字段等&#xff1b;…

【程序分享】express 程序:可扩展的高级工作流程,用于更快速的从头算材料建模

分享一个 express 程序&#xff1a;可扩展的高级工作流程&#xff0c;用于更快速的从头算材料建模。 感谢论文的原作者&#xff01; 主要内容 “在这项工作中&#xff0c;我们介绍了一个开源的Julia项目express&#xff0c;这是一个可扩展的、轻量级的、高通量的高级工作流框…

学python要下什么包吗,有推荐的教程或者视频吗?

初学者可以尝试三种方法来学习Python第三方库&#xff0c;第一种传统&#xff0c;第二种省心&#xff0c;第三种轻量。 1、安装PythonPycharm&#xff0c;通过pip进行包管理&#xff0c;或者Pycharm后台也可以 2、安装Anaconda&#xff0c;预装了几百个数据科学包&#xff0c…

模仿抖音用户ID加密ID的算法MB4E,提高自己平台ID安全性

先看抖音的格式 对ID加密的格式 MB4EENgLILJPeQKhJht-rjcc6y0ECMk_RGTceg6JBAA 需求是 同一个ID 比如 413884936367560 每次获取得到的加密ID都是不同的&#xff0c;最终解密的ID都是413884936367560 注意这是一个加密后可解密原文的方式&#xff0c;不是单向加密 那么如下进行…

Windows 环境下 vscode 配置 C/C++ 环境

vscode Visual Studio Code&#xff08;简称 VSCode&#xff09;是一个由微软开发的免费、开源的代码编辑器。它支持多种编程语言&#xff0c;并提供了代码高亮、智能代码补全、代码重构、调试等功能&#xff0c;非常适合开发者使用。VSCode 通过安装扩展&#xff08;Extension…