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

线性表-数组描述补充 迭代器(C++)

补充线性表数组实现的迭代器部分

知识点:

typedef是C语言中的一个关键字,它的主要作用是为一种数据类型定义一个新的名字(别名)。

在 C++ 的 STL(Standard Template Library)中,迭代器是连接容器和算法的桥梁。根据迭代器的功能和特性,STL 将迭代器分为以下五种类别:

  1. 输入迭代器(Input Iterator):只读,支持单向遍历。

  2. 输出迭代器(Output Iterator):只写,支持单向遍历并写入元素。

  3. 前向迭代器(Forward Iterator):支持单向遍历,并允许多次遍历同一序列(即支持多次读取)。

  4. 双向迭代器(Bidirectional Iterator):支持双向遍历,即可以向前也可以向后逐个遍历元素。

  5. 随机访问迭代器(Random Access Iterator):支持在常数时间内访问序列中的任意元素,并提供了丰富的算术运算能力。

ptrdiff_t 类型变量通常用来保存两个指针减法操作的结果。

代码:

template<typename T>
class iterator
{
public:typedef bidirectional_iterator_tag iterator_category;typedef T value_type;typedef ptrdiff_t difference_type;typedef T* pointer;typedef T& reference;iterator(T* thePosition = 0){position = thePosition;}T& operator*() const{return *position;}T* operator->() const{return &*position;}iterator& operator++(){++position;return *this;}iterator operator++(int){auto old = *this;++position;return old;}iterator& operator--(){--position;return *this;}iterator operator--(int){auto old = *this;--position;return old;}bool operator!=(const iterator right) const{return position != right.position;}bool operator==(const iterator right) const{return position == right.position;}protected:T* position;
};

在类arrayList中增加下面两个pubilc函数:

 class iterator;iterator begin(){return iterator(m_pElement);}iterator end(){return iterator(m_pElement + m_iListSize);}

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

相关文章:

  • vue3 + element-plus 的 upload + axios + django 文件上传并保存
  • dm 创建数据库实例【window】
  • Docker实践与应用举例:从入门到进阶
  • 【LeetCode】【算法】560. 和为 K 的子数组
  • Webots控制器编程
  • 舷外机,高效动力的选择,可靠性能的保障_鼎跃安全
  • 计算机新手练级攻略——如何搜索问题
  • echarts-gl 3D柱状图配置
  • 设计模式之模版方法模式(Template)
  • 背包九讲——背包问题求具体方案
  • Python http打印(http打印body)flask demo(http调试demo、http demo、http printer)
  • JSF HTML标签教程一口气讲完!(下)
  • cmake报错The link interface of target “gRPC::grpc“ contains: OpenSSL::SSL 解决
  • C语言PythonBash:空白(空格、水平制表符、换行符)与转义字符
  • 【Python】轻松解析JSON与XML:Python标准库的json与xml模块
  • 物联网对商业领域的影响
  • 第16章 SELECT 底层执行原理
  • python查询日志,并组装sql,修复缺失的数据
  • RecyclerView进阶知识讲解
  • C语言 函数
  • windows中docker安装redis和redisinsight记录
  • itextpdf打印A5的问题
  • qt QUndoView详解
  • python+智谱AI-实现钉钉消息自动回复
  • Kafka-Eagle的配置——kafka可视化界面
  • 【命令操作】Linux上带宽流量监控nethogs命令详解 _ 统信 _ 麒麟 _ 方德
  • 【入门篇】数字统计——多语言版
  • 探索那些现代C++语法糖
  • 【LeetCode】【算法】33. 搜索旋转排序数组
  • Python小游戏25——黄金矿工