C++之vector迭代器函数begin、end、rebegin、rend、cbegin、cend、crbegin、crend总结(二百零一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解C++之vector成员函数begin、end、rebegin、rend、cbegin、cend、crbegin、crend作用。

C++的vector是一种动态数组,它提供了一系列成员函数来操作和访问其元素。下面是这些成员函数的作用和用法:

    1. begin():返回指向vector第一个元素的迭代器。
    1. end():返回指向vector最后一个元素的下一个位置的迭代器。
    1. rbegin():返回指向vector最后一个元素的迭代器,用于逆向遍历。
    1. rend():返回指向vector第一个元素前一个位置的逆向迭代器,用于逆向遍历的结束位置。
    1. cbegin():与begin()类似,返回指向vector第一个元素的const迭代器,不允许修改元素。
    1. cend():与end()类似,返回指向vector最后一个元素的下一个位置的const迭代器,不允许修改元素。
    1. crbegin():与rbegin()类似,返回指向vector最后一个元素的const逆向迭代器,逆向不可修改。
    1. crend():与rend()类似,返回指向vector第一个元素前一个位置的const逆向迭代器,逆向不可修改。

2.应用实例

1. begin()函数返回一个指向vector第一个元素的迭代器。

#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用begin()函数获取第一个元素的迭代器std::vector<int>::iterator it = vec.begin();// 输出第一个元素std::cout << "第一个元素:" << *it << std::endl;return 0;
}

2. end()函数返回一个指向vector最后一个元素的下一个位置的迭代器。

#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用end()函数获取最后一个元素的下一个位置的迭代器std::vector<int>::iterator it = vec.end();// 输出最后一个元素的下一个位置的元素,此时应为未定义的值std::cout << "最后一个元素的下一个位置的元素:" << *it << std::endl;return 0;
}

3. rbegin()函数返回一个指向vector最后一个元素的逆向迭代器。

#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用rbegin()函数获取最后一个元素的逆向迭代器std::vector<int>::reverse_iterator rit = vec.rbegin();// 输出最后一个元素std::cout << "最后一个元素:" << *rit << std::endl;return 0;
}

4. rend()函数返回一个指向vector第一个元素的前一个位置的逆向迭代器。

#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用rend()函数获取第一个元素的前一个位置的逆向迭代器std::vector<int>::reverse_iterator rit = vec.rend();// 输出第一个元素的前一个位置的元素,此时应为未定义的值std::cout << "第一个元素的前一个位置的元素:" << *rit << std::endl;return 0;
}

5. cbegin()函数与begin()类似,返回一个指向vector第一个元素的const迭代器,用于访问vector的元素但不能修改它们。

#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用cbegin()函数获取第一个元素的const迭代器std::vector<int>::const_iterator it = vec.cbegin();// 尝试修改第一个元素,将会编译错误//*it = 10;// 输出第一个元素std::cout << "第一个元素:" << *it << std::endl;return 0;
}

6. cend()函数与end()类似,返回一个指向vector最后一个元素的下一个位置的const迭代器,用于访问vector的元素但不能修改它们。

#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用cend()函数获取最后一个元素的下一个位置的const迭代器std::vector<int>::const_iterator it = vec.cend();// 尝试修改最后一个元素的下一个位置的元素,将会编译错误//*it = 10;// 输出最后一个元素的下一个位置的元素,此时应为未定义的值std::cout << "最后一个元素的下一个位置的元素:" << *it << std::endl;return 0;
}

7. crbegin()函数与rbegin()类似,返回一个指向vector最后一个元素的const逆向迭代器,用于访问vector的元素但不能修改它们。

#include <iostream>
#include <vector>
int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用crbegin()函数获取最后一个元素的const逆向迭代器std::vector<int>::const_reverse_iterator rit = vec.crbegin();// 尝试修改最后一个元素,将会编译错误//*rit = 10;// 输出最后一个元素std::cout << "最后一个元素:" << *rit << std::endl;return 0;
}

8. crend()函数与rend()类似,返回一个指向vector第一个元素的前一个位置的const逆向迭代器,用于访问vector的元素但不能修改它们。

#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 使用crend()函数获取第一个元素的前一个位置的const逆向迭代器std::vector<int>::const_reverse_iterator rit = vec.crend();// 尝试修改第一个元素的前一个位置的元素,将会编译错误//*rit = 10;// 输出第一个元素的前一个位置的元素,此时应为未定义的值std::cout << "第一个元素的前一个位置的元素:" << *rit << std::endl;return 0;
}

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

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

相关文章

深度学习(Python)学习笔记2

第二章 感知机 2.1 感知机是什么 感知机接收多个输入信号,输出一个信号。 感知机的信号会形成流,向前方输送信息。 感知机的信号只有“流/不流”(1/0)两种取值。 本学习笔记中,0对应“不传递信号”,1对应“传递信号”。 图中、是输入信号,是输出信号,、是权重。图…

小米6/6X/米8/米9手机刷入鸿蒙HarmonyOS.4.0系统-刷机包下载-遥遥领先

小米手机除了解锁root权限&#xff0c;刷GSI和第三方ROM也是米粉的一大爱好&#xff0c;这不&#xff0c;在华为发布了HarmonyOS.4.0系统后不久&#xff0c;我们小米用户也成功将自己的手机干山了HarmonyOS.4.0系统。虽然干上去HarmonyOS.4.0系统目前BUG非常多&#xff0c;根本…

LeetCode刷题笔记【33】:动态规划专题-5(最后一块石头的重量 II、目标和、一和零)

文章目录 前置知识1049. 最后一块石头的重量 II题目描述解题思路代码 494. 目标和题目描述用回溯算法转换为背包问题动态规划 474.一和零题目描述解题思路代码 总结 前置知识 今天是动态规划专题的第5篇, 也是背包问题的第2篇. 所以本文和动态规划专题的1~3弱相关, 和上一篇, …

Prometheus-PushGateway自定义监控项

文章目录 一、前言二、PushGateway安装三、PushGateway的使用四、PushGateway脚本思路 一、前言 pushgateway相比较exporter是主动向服务器发送请求&#xff0c;pushgateway本身也是一个程序&#xff0c;可以运行在任意节点上(不是必须在被监控端)&#xff0c;运行本身没有抓取…

项目:TCP在线云词典

一.要求 1.搭建的框架环境中实现并发&#xff0c;实现多个用户同时查询的功能。 2.服务器分别保存每个用户的使用记录&#xff0c;客户端可以查询日志的功能。 3.基本的查询单词的功能。 4.密码验证的功能&#xff0c;实现登录验证账号和密码是否正确。 二.流程和框架 框架 …

【Python+selenium】生成测试报告

批量执行完用例后&#xff0c;生成的测试报告是文本形式的&#xff0c;不够直观&#xff0c;为了更好的展示测试报告&#xff0c;最好是生成HTML格式的。 unittest里面是不能生成html格式报告的&#xff0c;需要导入一个第三方的模块&#xff1a;HTMLTestRunner 一、导入HTMLT…

蓝牙技术|多快好省的苹果Find My查找定位方案商:北京自在科技

在电子市场里&#xff0c;各种蓝牙定位器品牌争奇斗艳&#xff0c;例如国外的Tile Mate 和 Slim&#xff0c;三星的 Galaxy SmartTag 和 Galaxy SmartTag&#xff0c;Chipolo 的ONE Spot&#xff0c;还有苹果的 AirTag 等等。而国内也有着不少优秀的品牌&#xff0c;如Nutale的…

多输入多输出 | MATLAB实现CNN-LSTM-Attention卷积神经网络-长短期记忆网络结合SE注意力机制的多输入多输出预测

多输入多输出 | MATLAB实现CNN-LSTM-Attention卷积神经网络-长短期记忆网络结合SE注意力机制的多输入多输出预测 目录 多输入多输出 | MATLAB实现CNN-LSTM-Attention卷积神经网络-长短期记忆网络结合SE注意力机制的多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预…

python抠图(去水印)开源库lama-cleaner入门应用实践

1. 关于 Lama Cleaner Lama Cleaner 是由 SOTA AI 模型提供支持的免费开源图像修复工具。可以从图片中移除任何不需要的物体、缺陷和人&#xff0c;或者擦除并替换&#xff08;powered by stable diffusion&#xff09;图片上的任何东西。 特征&#xff1a; 完全免费开源&am…

YOLO物体检测-系列教程2:YOLOV2整体解读

&#x1f388;&#x1f388;&#x1f388;YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV2提出论文&#xff1a;YOLO9000: Better, Faster, Stronger 1、YOLOV1 优点&#xff1a;快速&#xff0c;简单&#xff01;问题1&#xff1a;每个Cell只预测一个类别&…

ros----发布者和订阅者模型

话题模型&#xff1a; 如何自定义话题消息 1.定义msg文件 2.在package.xml中添加功能包依赖 <build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend>3.在CMakeList.txt文件中添加编译选项 4.编译生成语言的相…

医院安全不良事件报告系统源码 PHP+ vue2+element+ laravel8+ mysql5.7+ vscode开发

不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”&#xff0c;结合预存上百套已正在使用的模板&#xff0c;帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件、意…

JWT安全及案例实战

文章目录 JWT 安全1. Cookie2. Session3. Token4. JWT4.1 JWT概述4.1.1 JWT头4.1.2 有效载荷4.1.3 签名哈希4.1.4 通信流程 4.2 JWT 漏洞描述4.3 JWT 漏洞原理4.4 JWT 安全防御 5. WebGoat 靶场实验5.1 第四关5.2 第五关5.3 第七关 越权与逻辑漏洞 Web漏洞点只有一个入口&#…

12306 抢票小助手: 完整易用的抢票解决方案 | 开源日报 0917

testerSunshine/12306 Stars: 31.4k License: MIT 12306 购票小助手是一个使用 Python 编写的项目&#xff0c;主要功能包括自动打码、自动登录、准点预售和捡漏、智能候补以及邮件通知等。该项目具有以下核心优势&#xff1a; 支持多个版本的 Python提供验证码本地识别功能可…

企业架构LNMP学习笔记46

PHP测试连接代码&#xff1a; php代码测试使用memcached&#xff1a; 示例代码&#xff1a; <?php //实例化类 $mem new memcached(); //调用连接memcached方法 注意连接地址和端口号 $mem->addServer(192.168.17.114,11211); //存数据 var_dump($mem->set(name,l…

AUTOSAR通信篇 - CAN网络通信(五:ComM)

文章目录 模块交互EcuM交互BswM交互NvM交互CanSM交互NM交互 ComM功能Paritial Network Cluster 管理Partial Network Cluster 管理功能ComM PNC状态机在主状态COMM_PNC_NO_COMMUNICATION中PNC的行为PNC网关相关的要求 从断电进入PNC主状态COMM_PNC_NO_COMMUNICATION时在主状态C…

深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数

在MySQL数据库中&#xff0c;JSON格式的数据处理已经变得越来越常见。JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数&#xff0c;其中两个关键的函数是…

SpringBoot实战(二十四)集成 LoadBalancer

目录 一、简介1.定义2.取代 Ribbon3.主要特点与功能4.LoadBalancer 和 OpenFeign 的关系 二、使用场景一&#xff1a;Eureka LoadBalancer服务A&#xff1a;loadbalancer-consumer 消费者1.Maven依赖2.application.yml配置3.RestTemplateConfig.java4.DemoController.java 服务…

笔记01:第一行Python

NameError 名字不含特殊符号&#xff08;只能是英文、数字、下划线、中文等&#xff09;名字区分大小写名字先定义后使用 SyntaxError 不符合Python语法书写规范除了语法成分中的保留拼写错误输出中文符号if、for、def等语句末尾忘记冒号 IdentationError 缩进错误&#x…

C# Onnx Yolov8 Detect 物体检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…