当前位置: 首页 > news >正文

做美食视频的网站网站 收费

做美食视频的网站,网站 收费,小米发布会后多久可以买到新机,亚当学院网站建设视频教程目录 一、前言 二、什么是迭代器 三、迭代器的分类与接口 #x1f4a6;迭代器的分类 #x1f4a6;迭代器的接口 #x1f4a6;迭代器与接口之间的关联 四、string类中迭代器的应用 #x1f4a6; 定义string类----迭代器 #x1f4a6;string类中迭代器进行遍历 ✨be…目录 一、前言 二、什么是迭代器  三、迭代器的分类与接口 迭代器的分类  迭代器的接口 迭代器与接口之间的关联 四、string类中迭代器的应用 定义string类----迭代器  string类中迭代器进行遍历 ✨beginend 正向可读可修改迭代器  ✨beginend 正向只读迭代器  ✨rbeginrend 反向可读可修改迭代器  ✨rbeginrend 反向只读迭代器  string 类中迭代器在算法上的应用 ✨【reverse】函数 ✨【sort】函数 五、共勉  一、前言 在C中标准模板库Standard Template LibrarySTL是一组强大的通用模板类和函数它为我们提供了很多供使用的数据结构和算法。其中string类是STL中一个非常有用的类用于处理字符串。在使用string类时我们经常需要遍历字符串的每个字符或者进行某些特定的操作。而实现遍历和操作的关键就是使用string迭代器。本文将详细介绍string迭代器的使用方法及其在处理字符串时的重要作用。 二、什么是迭代器  当我们需要遍历一个集合比如数组、列表或字符串中的元素时就像是访问看每个元素这时候迭代器就派上用场了。迭代器就像是一个指针它可以帮助我们在集合中逐个地获取其中的元素并且可以根据需要进行修改。你可以把迭代器想象成一个遥控器可以让我们在集合中前进、后退或者指向特定的元素。使用迭代器我们不需要关心集合内部的具体实现细节只需要专注于每个元素的访问和操作。        迭代器提供了一种抽象的方法来处理集合中的元素它可以让我们在遍历过程中轻松访问每个元素而不必担心底层数据结构是什么样的。迭代器分为不同的类型每种类型有着特定的目的和功能。例如我们可以使用迭代器来读取集合元素的值也可以使用迭代器来修改元素的值甚至可以删除或添加元素。        总的来说迭代器是一种工具帮助我们在集合中按照一定的顺序遍历和操作每个元素使得我们能够更方便地处理集合中的数据。使用迭代器我们可以以一种统一的方式处理不同类型的集合提高了代码的可复用性和灵活性。       所以本次博客将以string类为例来详细的讲解迭代器   三、迭代器的分类与接口 迭代器的分类  迭代器总共有四种正向迭代器iterator、反向迭代器reverse_iterator、只读迭代器const_iterator、只读反向迭代器const_reverse_iterator       当我们有针对const修饰的对象时则必须使用只读迭代器const_iterator         迭代器是一个变量相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素通过迭代器就可以读写它指向的元素。从这一点上看迭代器和指针类似。       不同容器底层数据结构不一样每一种容器都有自己的迭代器迭代器按照定义方式分成以下四种1.正向迭代器定义方法如下 容器类名::iterator 迭代器名;2.常量正向迭代器定义方法如下 容器类名::const_iterator 迭代器名;3. 反向迭代器定义方法如下 容器类名::reverse_iterator 迭代器名;4.常量反向迭代器定义方法如下 容器类名::const_reverse_iterator 迭代器名;迭代器的接口 迭代器的接口总共有8种但是最常用的是4种所以本次博客来讲解最常用的4种接口的用法 常用接口的用法描述 函数名称功能说明1. begin将正向迭代器返回容器 c 的第一个元素2. end将正向迭代器返回容器 c 的最后一个元素的后一个位置3. rbegin返回一个逆序迭代器它指向容器 c 的最后一个元素4. rend返回一个逆序迭代器它指向容器 c 的第一个元素的前面位置 迭代器与接口之间的关联 1. 接口 begin 和 end 属于正向迭代器的接口2.接口 rbegin 和 rend 属于反向迭代器的接口   四、string类中迭代器的应用 定义string类----迭代器  string::iterator ite; 为什么要这样定义呢 这一点我们需要深入考虑迭代器的底层原理迭代器是如何被设计的看如下代码 typedef char* iterator; typedef const char* const_iterator; iterator begin() {return _str; }iterator end() {return _str _size; }从上述代码中我们发现迭代器 iterator 其实是在string 类中 的 char*  字符指针  类型  的别名 所以定义的 ite 就是一个字符指针。观察代码我们发现迭代器的用法和地址很像上面也说了可以看成指针所有迭代器是指针吗 迭代器不完全是指针 某些类的迭代器底层是指针如string,但是有些类的迭代器底层并不是指针但在理解上可以看成指针。 string类中迭代器进行遍历 理解 当我们说到迭代器时可以将其想象为一个类似于指针的对象它允许我们在容器例如字符串中按顺序访问元素或字符。 对于字符串std::string我们可以使用迭代器来遍历其中的字符。迭代器可以帮助我们逐个访问字符串中的每个字符从头到尾或者反向从尾到头。 想象一下你有一串字母比如 “Hello”可以将迭代器看作是一根指向字符的手指。开始时指向字符串的开头即 ‘H’。然后你可以通过移动指针迭代器来访问下一个字符指向 ‘e’再移动指针指向 ‘l’以此类推直到访问到最后一个字符 ‘o’。 ✨beginend 正向可读可修改迭代器  使用迭代器去遍历一个字符串代码如下 int main() {string s(hello);string::iterator ite;for (ite s.begin(); ite ! s.end(); ite){(*ite);cout *ite ;}cout endl;return 0; }⚡ 细节解析         begin是返回字符串第一个字符的迭代器而end则是返回一个指向字符串后一个字符的迭代器。注意end返回的是指向字符的下一个字符的迭代器。C中的迭代器一般是左闭右开区间。 ✨beginend 正向只读迭代器  使用迭代器去遍历一个字符串代码如下 void Func(const string s) {string::iterator ite s.begin();while (ite ! s.end()){cout *ite ;ite;}cout endl; }int main() {string s(hello);Func(s);return 0; }      原因就是在于对象s是属于const对象那么它在调用【begin】的时候返回的就是const迭代器是【只读】那此时我们若是使用普通迭代去接收的话就是【可读可写】也算是一个权限放大的问题 代码修改 void Func(const string s) {string::const_iterator ite s.begin();while (ite ! s.end()){cout *ite ;ite;}cout endl; }int main() {string s(hello);Func(s);return 0; } ✨rbeginrend 反向可读可修改迭代器  使用迭代器去遍历一个字符串并反向输出代码如下 int main() {string s(hello);cout s endl endl;string::reverse_iterator rit;for (rit s.rbegin(); rit ! s.rend(); rit){(*rit);cout *rit ;}cout endl;return 0; } ⚡ 细节解析         我们发现反向迭代器输出的是正向迭代器相反的结果。在反向迭代器中rbegin指向字符串的最后一个字符(即字符串的反向开头)。rend返回一个反向迭代器指向字符串第一个字符(被认为是字符串的反向端)前面的理论元素。正向迭代器与反向迭代器的不同还在于正向迭代器的是向尾部走的而反向迭代器则向头部走。   ✨rbeginrend 反向只读迭代器  使用迭代器去遍历一个字符串并反向输出代码如下 void Func(const string s) {string::const_reverse_iterator ite s.rbegin();while (ite ! s.rend()){cout *ite ;ite;}cout endl; }int main() {string s(hello);Func(s);return 0; } string 类中迭代器在算法上的应用 ✨【reverse】函数 首先就是我们使用到最多的【reverse】函数字面意思颠倒元素 观察其参数我们可以发现传入两个迭代器即可那刚好就是我们前面所学的【begin】和【end】 reverse(s.begin(), s.end());一起来看一下结果就可以发现确实string字符串内的字符都发生了一个翻转但是有一个头文件#include algorithm可不要忘记了哦 int main() {string s(abcdef);string::iterator it s.begin();while (it ! s.end()){cout *it ;it;}cout endl;reverse(s.begin(), s.end());it s.begin();while (it ! s.end()){cout *it ;it;}cout endl;} ✨【sort】函数 再来说一个【sort】也很明了就是对区间内的元素去做一个排序的操作此时我们可以看到两个重载形式第一个就是正常传入区间迭代器而第二个重载形式则是可以传递【仿函数】它也是STL的六大组件之一我们在后续也会进行学习这里先提一句。 立马我们来看看如何去进行使用也是传递【begin】和【end】即可 sort(s.begin(), s.end());通过运行结果我们可以看到再 通过sort进行排序后原本的乱串变成了有序串 int main() {string s(acdfbe);cout 原型字符串;string::iterator it s.begin();while (it ! s.end()){cout *it ;it;}cout endl;reverse(s.begin(), s.end());cout 反转字符串;it s.begin();while (it ! s.end()){cout *it ;it;}cout endl;sort(s.begin(), s.end());cout 排序字符串;it s.begin();while (it ! s.end()){cout *it ;it;}cout endl;} 五、共勉  以下就是我对【C STL】string类-----迭代器的理解如果有不懂和发现问题的小伙伴请在评论区说出来哦同时我还会继续更新对CSTL库的理解请持续关注我哦
http://wiki.neutronadmin.com/news/265979/

相关文章:

  • 使用万网怎么做网站网站建设中html页面
  • 网站备案许可证号网站开通银行支付接口
  • 网站添加微博企业酒店的网站建设
  • 响应式设计网站韩国优秀设计网站
  • 深圳分销网站设计价格合肥今天发现了一例病例吗
  • apache搭建多个网站网站代维护
  • 网站关键词突然搜不到软文推广系统
  • 房产律师网站模板永久免费的仓库
  • 中国最有名的网站建设公司湖南网站营销seo多少费用
  • 推荐聊城做网站怀化人社网站
  • 做网站开发要多久馆陶网站
  • 网站建设留言板实验心得网络营销课程心得体会300字
  • 服务网站建设企业网站的内容规划怎么写
  • 网站换ip 有多大影响山东大标网络
  • 网站设计主题选择wordpress代码编辑插件
  • iis7 网站防盗链扬州市建设工程造价管理站网站
  • 旅游网站开发项目策划书优设网站怎么下载
  • 江苏建设厅执业网站大连工业大学是211还是985
  • 国内最大的开源网站wordpress island主题
  • 都有哪些网站中山 照明 骏域网站建设
  • 光山网站建设网站地图样本
  • 义乌开锁做网站哪个好安平县外贸网站建设
  • 网站域名都需要备案吗天津优化代理
  • 设计彩票网站开发网站页面怎么做的好看
  • 刚开始的网站开发公司建站网哪个好
  • 建立企业网站费用icp备案管理系统官网
  • seo网站推广企业做网站建设还有钱赚吗
  • .net 微信网站开发网站域名备案流程
  • 在线教育网站有什么程序做青岛网站推广方案
  • 邳州做网站pzwodewordpress漫画主题