An iterator is an object that can navigate over elements of STL containers.(eg of containers:vectors) All iterator represents a certain position in a container.

We can utilize iterators to traverse through the elements of container .They can be imagined as something like a pointer pointing to some location and we can get to content of the particular location utilizing them.

Basic Operations of iterators :-

*begin() :- This function is used to return the beginning position of the container.

*end() :- This function is used to return the after end position of the container.

```// C++ code to demonstrate the working of
// iterator, begin() and end()

#include<iostream>
#include<iterator> // for iterators
#include<vector> // for vectors

using namespace std;

int main()
{
vector<int> a = { 1, 2, 3, 4, 5 };

// Declaring iterator to a vector
vector<int>::iterator p;

// Displaying vector elements using begin() and end()
cout << "The vector elements are : ";
for (p = a.begin(); p < a.end(); p++)
cout << *p << " ";

return 0;
}```

Output:

`The vector elements are : 1 2 3 4 5 `

advance() :- This function is used to increment the iterator position till the specified number mentioned in its arguments.

```// C++ code to demonstrate the working of

#include<iostream>
#include<iterator> // for iterators
#include<vector> // for vectors

using namespace std;

int main()
{
vector<int> a = { 1, 2, 3, 4, 5 };
vector<int>::iterator p = a.begin(); // Declaring iterator to a vector
// points to 4

// Displaying iterator position
cout << "The position of iterator after advancing is : ";
cout << *p << " ";

return 0;

}```

Output:

`The position of iterator after advancing is:4`

*next() :- This function returns the new iterator that the iterator would point after advancing the positions mentioned in its arguments.

*prev() :- This function returns the new iterator that the iterator would point after decrementing the positions mentioned in its arguments.

```// C++ code to demonstrate the working of
// next() and prev()

#include<iostream>
#include<iterator> // for iterators
#include<vector> // for vectors

using namespace std;

int main()
{
vector<int> a = { 1, 2, 3, 4, 5 };

// Declaring iterators to a vector
vector<int>::iterator p = a.begin();
vector<int>::iterator ftr = a.end();

// Using next() to return new iterator
// points to 4
auto it = next(p, 3);

// Using prev() to return new iterator
// points to 3
auto it1 = prev(ftr, 3);

// Displaying iterator position
cout << "The position of new iterator using next() is : ";
cout << *it << " ";
cout << endl;

// Displaying iterator position
cout << "The position of new iterator using prev()  is : ";
cout << *it1 << " ";
cout << endl;

return 0;
}```

Output:

`The position of new iterator using next() is : 4 The position of new iterator using prev()  is : 3 `

*inserter() :- This function is used to insert the elements at any position in the container. It accepts 2 arguments, the container and iterator to position where the elements have to be inserted.

```// C++ code to demonstrate the working of
// inserter()

#include<iostream>
#include<iterator> // for iterators
#include<vector> // for vectors

using namespace std;

int main()
{
vector<int> ar = { 1, 2, 3, 4, 5 };
vector<int> ar1 = {10, 20, 30};

// Declaring iterator to a vector
vector<int>::iterator ptr = ar.begin();

// Using advance to set position

// copying 1 vector elements in other using inserter()
// inserts ar1 after 3rd position in ar
copy(ar1.begin(), ar1.end(), inserter(ar,ptr));

// Displaying new vector elements
cout << "The new vector after inserting elements is : ";
for (int &x : ar)
cout << x << " ";

return 0;
}```

Output:

`The new vector after inserting elements is : 1 2 3 10 20 30 4 5 `
darkmode