C++ 输入迭代器

C++ 输入迭代器

  • 输入迭代器是用于从容器中读取值的迭代器。
  • 解引用输入迭代器允许我们从容器中检索值。
  • 它不会改变容器的值。
  • 它是单向迭代器。
  • 它可以递增,但不能递减。
  • 可用于输入迭代器的运算符有递增运算符(++),递减运算符(--),解引用运算符(*),不等于运算符(!=)和等于运算符(==)。
  • 输入迭代器由 Istream 生成。
  • 前向迭代器,双向迭代器和随机访问迭代器都是有效的输入迭代器。
属性 有效表达式
输入迭代器是可复制构造、可复制赋值和可析构的。 X b(a); b= a;
可使用相等或不等操作符进行比较。 a==b; a!=b;
可解引用。 *a;
可递增。 ++a;

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

输入迭代器的特点

  • 相等/不相等运算符 :可以使用相等或不相等运算符比较输入迭代器。只有当两个迭代器指向相同位置时,它们才相等。假设’A’和’B’是两个迭代器:
A ==B;   // equality operator
A!=B;   // inequality operator

让我们看一个简单的示例:

#include <iostream>
#include<vector>
#include<iterator>
using namespace std;
int main()
{
    vector<int> v{1,2,3,4,5};
    vector<int>::iterator itr,itr1;
    itr=v.begin();
    itr1=v.begin()+1;
    if(itr==itr1)
    std::cout << "Both the iterators are equal" << std::endl;
    if(itr!=itr1)
    std::cout << "Both the iterators are not equal" << std::endl;
    return 0;
}

输出:

Both the iterators are not equal

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

  • 取消引用一个迭代器 :我们可以使用取消引用运算符(*)来取消引用迭代器。假设’A’是一个迭代器:
*A     //  Dereferencing 'A' iterator by using *.

让我们看一个简单的示例:

#include <iostream>
#include<vector>
#include<iterator>
using namespace std;
int main()
{
           vector<int> v{11,22,33,44};
           vector<int>::iterator it;
           it = v.begin();
         cout<<*it;
          return 0;
}

输出:

11

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

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

让我们看一个简单的示例:

#include <iostream>
#include<vector>
#include<iterator>
using namespace std;
int main()
{
    vector<int> v{11,22,33,44};
    vector<int>::iterator it,it1,temp;
    it = v.begin();
    it1 = v.begin()+1;
    temp=it;
    it=it1;
    it1=temp;
    cout<<*it<<" ";
    cout<<*it1;
    return 0;
}

输出:

22 11

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程