栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++:迭代器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++:迭代器

文章目录
  • 迭代器功能

迭代器功能
  • 一个迭代器需要至少支持两个功能才有用:
    • 访问当前元素 *i
    • 前缀自增操作 ++i (前缀自增和后缀自增是两个操作符)

  • 比较两个迭代器是否指向相同元素 i == j 和 i != j
  • 访问元素的成员 i->m
  • 修改元素 *i = v
  • 单向:支持以上,及可以++
  • 双向:支持以上,及可以--
  • 随机的:
    • 支持一个偏移量: i + n 和 i - n
    • 支持:i += n 和 i -= n
    • 支持两个迭代器 :i - j

    • …像vector线性且连续存储元素的容器才会提供。

对于一个迭代器类型 T,我们会关心和它相关的如下信息:

  • 它是哪种类型的迭代器;
  • 它指向的数据类型是什么;
  • 这个数据类型的引用类型是什么;
  • 这个数据类型的指针类型是什么;
  • 两个迭代器的距离用什么类型表示。
  • 内置类型就是天然的,对于一个自定义的类模板/class类型,需进行操作符重载。
#include 

class ArrayIterator {
 public:
  typedef std::random_access_iterator_tag iterator_category;  // 迭代器类型 随机
  typedef int value_type;        // 数据类型
  typedef int& reference_type;   // 数据类型的引用
  typedef int* pointer_type;     // 数据类型的指针
  typedef std::ptrdiff_t difference_type;  // 距离类型

  // 迭代器的实现
};

  • 详细的在这里
  • 凌乱的在这里

I am a soldier and I’m marching on
我是一个战士,战士在前进

I am a warrior and this is my song
我是一个勇士,这是勇士之歌

my eyes are steel and my gaze is long
目光似铁,视野无限

I am a warrior and this is my song
我是勇士,这就是勇士之歌

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997322.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号