C++ 输出迭代器

2025年4月18日 | 3 分钟阅读
  • 输出迭代器是一种用于修改容器中值的迭代器。
  • 解引用输出迭代器允许我们更改容器的值。
  • 它不允许我们从容器中读取值。
  • 它是一种单向且只写的迭代器。
  • 它可以递增,但不能递减。
  • 可用于输出迭代器的运算符是递增运算符(++)、递减运算符(--)和赋值运算符(=)
  • 输出迭代器有两个主要的子类:
    • 插入迭代器
    • ostream 迭代器
C++ Output Iterator

插入迭代器

  • 插入迭代器是一种用于在指定位置插入元素的迭代器。
  • 对 insert_iterator 使用赋值运算符会在当前位置插入新元素。

语法

参数

x:将要插入新元素的容器。

it:指向要修改位置的迭代器对象。

让我们看一个简单的例子

输出

Elements of v1 are : 1 2 3 3 4 5 6 7 4 5

在上面的示例中,insert_iterator 应用于复制算法,将 vector v2 的元素插入到 vector v1 中由 it 指向的指定位置。

Ostream 迭代器

  • Ostream 迭代器是输出迭代器,用于连续向输出流(如 cout)写入数据。
  • Ostream 迭代器是使用 basic_ostream 对象创建的。
  • 当对 ostream 迭代器使用赋值运算符时,它会向输出流中插入一个新元素。

语法

Ostream 迭代器类的成员函数

参数

  • T:要插入到容器中的元素的类型。
  • charT:ostream 可以处理的元素类型,例如 char ostream。
  • traits:这些是流为元素处理的字符特性。

让我们看一个简单的例子

输出

10,20,30,40,50

在上面的示例中,out 是 ostream_iterator 的一个对象,用于在 vector 元素之间添加分隔符','。

让我们看另一个 ostream 迭代器的简单示例

输出

5,10,15,

输出迭代器的特性

  • 相等/不相等运算符:输出迭代器不能使用相等或不相等运算符进行比较。假设 X 和 Y 是两个迭代器。
  • 解引用:输出迭代器可以作为左值解引用。
  • 可递增:输出迭代器可以使用 operator++() 函数进行递增。

输出迭代器的局限性

  • 只能赋值,不能访问:我们可以将输出迭代器作为左值进行赋值,但不能作为右值来访问它们。

假设 'A' 是一个输出迭代器类型,'x' 是一个整型变量

  • 它不能递减:我们可以使用 operator++() 函数递增输出迭代器,但不能递减它。

假设 'A' 是一个输出迭代器类型

  • 多遍算法:输出迭代器不能用于多遍算法。因为输出迭代器是单向的,只能向前移动。因此,它不能用于多次遍历容器。
  • 关系运算符:输出迭代器不能使用任何关系运算符进行比较。

假设 'A' 和 'B' 是两个迭代器

  • 算术运算符:输出迭代器不能与算术运算符一起使用。因此,我们可以说输出迭代器只能按顺序向前移动。

假设 'A' 是一个输出迭代器:


下一主题