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

c++ 自己实现一个迭代器

具体代码

/*自定义迭代器的实现
*/
#include <iostream>
using namespace std;
class num
{int val;    //具体的数字int length; //数字的位数void calculate_length(){if(val/10==0){      //这个数字只有1位length=1;return;}int x=10;           //这里就是不断重复除直到为0,从而得出数字的具体位数int pow=0;int tempNum=val;while(tempNum!=0){tempNum/=10;pow++;}length=pow;}
public:num(int tempNum){ //以下是一些基本的函数,用于设置值val=tempNum;calculate_length();}void set(int tempNum){val = tempNum;calculate_length();}int get(){return val;}//以下是迭代器的部分class iterator{int pos;    //数字的下标num* obj;   //如果要在迭代器里面访问num的内容,必须要这个public:/*迭代器,要重载*,++,--*/iterator(num* ptr,int n){pos = n;obj = ptr;}iterator(){//空构造器pos = 0;obj = nullptr;}//操作符void operator++(){  //注意,这种没有参数的++重载的是前置的++   ++itpos++;}void operator++(int i){  //这种有任意int参数的重载的是后缀++  it++pos++;}void operator--(){pos--;}void operator--(int i){  pos--;}int operator*()const{//13324 取第二位10位:  (13324%100)/10//num  去除第n位     (num % 10^(n))/ 10^(n-1)if(pos>=obj->length) return -1;if(pos==0)return obj->val%10;int o=10;int pow=0;while(pow<(pos-1)){// cout<<pow<<" "<<pos<<endl;o*=10;pow++;}return (obj->val%(o*10))/(o);}bool operator!=(const iterator& it){return it.pos!=pos;}bool operator==(const iterator& it){return it.pos==pos;}};//获取迭代器,常见的比如begin,end;iterator begin(){return iterator(this,0);}iterator end(){return iterator(this,length);}
};
int main()
{num a(2354862);for(auto it=a.begin();it!=a.end();it++){cout<<*it<<" ";}cout<<endl;return 0;
}

参考资料

https://blog.csdn.net/dyyzlzc/article/details/103336232

http://www.lryc.cn/news/321117.html

相关文章:

  • HarmonyOS NEXT应用开发—图片压缩方案
  • 深入理解nginx的请求限速模块[下]
  • 王者归位:Kafka控制器组件解析
  • XmlHttpRequest responseType: ‘stream‘ 图片代理服务器
  • 手写 UE4中的 TArray
  • Flink实时写Hudi报NumberFormatException异常
  • Dataset与DataLoader、transform
  • 海豚调度系列之:认识海豚调度
  • MateBook 14s 2023款 集显 触屏(HKFG-16)原厂Win11系统
  • zookeeper快速入门(合集)
  • 鸿蒙App开发学习 - TypeScript编程语言全面开发教程(上)
  • Java语言: JVM
  • 下拉树级带搜索功能
  • 【数组、字符串】算法例题
  • docxTemplater——从word模板生成docx文件
  • Linux权限维持后门及应急响应
  • git相关指令
  • Apache Doris 2.1 核心特性 Variant 数据类型技术深度解析
  • accessToken
  • nodeJs 学习
  • STM32利用AES加密数据、解密数据
  • C语言技能数(知识点汇总)
  • Vue.js+SpringBoot开发企业项目合同信息系统
  • Linux Shell中的echo命令详解
  • php 页面中下载文件|图片
  • 2024年企业经济管理与大数据国际会议(ICEEMBD 2024)
  • 数新网络助阵哈工大国家级项目,共绘数智化新篇章,打造大数据法务平台
  • React+umi+dva 项⽬实战-lesson6
  • Vue el-table 合并单元格
  • 面试算法-61-二叉树的右视图