C++ 输入迭代器

2024 年 8 月 28 日 | 阅读 2 分钟
  • 输入迭代器(Input Iterator)是用于从容器中读取值的迭代器。
  • 解引用输入迭代器允许我们从容器中检索值。
  • 它不会改变容器的值。
  • 它是一种单向迭代器。
  • 它可以递增,但不能递减。
  • 可用于输入迭代器的运算符有:递增运算符(++)、递减运算符(--)、解引用运算符(*)、不等运算符(!=)和相等运算符(==)。
  • 输入迭代器由 Istream 产生。
  • 前向迭代器、双向迭代器和随机访问迭代器都是有效的输入迭代器。
属性有效表达式
输入迭代器是可拷贝构造、可拷贝赋值和可销毁的。X b(a);
b= a;
可以使用相等或不等运算符进行比较。a==b;
a!=b;
它可以被解引用。*a;
它可以递增。++a;

其中 'X' 是输入迭代器类型,而 'a' 和 'b' 是迭代器类型的对象。

输入迭代器的特性

  • 相等/不等运算符:输入迭代器可以使用相等或不等运算符进行比较。只有当两个迭代器指向相同位置时,它们才相等,否则不相等。假设 'A' 和 'B' 是两个迭代器。

让我们看一个简单的例子

输出

Both the iterators are not equal

在上面的示例中,itr 和 itr1 是两个迭代器。这两个迭代器都是 vector 类型。'itr' 是一个指向 vector 第一个位置的迭代器对象,'itr1' 是一个指向 vector 第二个位置的迭代器对象。因此,两个迭代器指向的位置不同,所以条件 itr1!=itr 返回 true,并打印 "Both the iterators are not equal"(两个迭代器不相等)。

  • 解引用迭代器:我们可以使用解引用运算符(*)来解引用迭代器。假设 'A' 是一个迭代器。

让我们看一个简单的例子

输出

11

在上面的示例中,'it' 是一个指向 vector 'v' 第一个元素的迭代器对象。解引用迭代器 *it 返回迭代器 'it' 所指向的值。

  • 可交换性:指向不同位置的两个迭代器可以被交换。

让我们看一个简单的例子

输出

22 11

在上面的示例中,'it' 和 'it1' 迭代器通过使用第三个迭代器对象,即 temp,进行了交换。


下一主题