Properties | Valid Expressions |
---|---|
It is default constructible. | A x; |
It is a copy-constructible. | A x(y); |
It is a copy-assignable. | y = x; |
It can be compared either by using an equality or inequality operator. | a==b; a!=b; |
It can be incremented. | a++; ++a; |
It can be dereferenced as an rvalue. | *a; |
It can also be dereferenced as an lvalue. | *a = t; |
Where 'A' is a forward iterator type, and x and y are the objects of a forward iterator type, and t is an object pointed by the iterator type object.
Let's see a simple example
#include <iostream> #include <fstream> #include <iterator> #include <vector> using namespace std; template<class ForwardIterator> // function template void display(ForwardIterator first, ForwardIterator last) // display function { while(first!=last) { cout<<*first<<" "; first++; } } int main() { vector<int> a; // declaration of vector. for(int i=1;i<=10;i++) { a.push_back(i); } display(a.begin(),a.end()); // calling display() function. return 0; }
A forward iterator can be compared by using equality or an inequality operator.
Suppose 'A' and 'B' are the two iterators:
A==B; // equality operator A!=B; // inequality operator
We can dereference the forward iterator as an rvalue as well as an lvalue. Therefore, we can access the output iterator and can also assign the value to the output iterator.
Suppose 'A' is an iterator and 't' is an integer variable
*A = t; t = *A;
A forward iterator can be incremented but cannot be decremented.
Suppose 'A' is an iterator:
A++; ++A;
A forward iterator cannot be decremented as it moves only in the forward direction.
Suppose 'A' is an iterator
A--; // invalid
A forward iterator can be used with the equality operator, but no other relational operators can be applied on the forward iterator.
Suppose 'A' and 'B' are the two iterators
A==B; // valid A>=B; // invalid
An arithmetic operators cannot be used with the forward iterator.
A+2; // invalid A+3; // invalid
A forward iterator does not provide the random access of an element. It can only iterate through the elements of a container.