Open In App
Related Articles

Difference between Iterators and Pointers in C/C++ with Examples

Improve Article
Improve
Save Article
Save
Like Article
Like

Pointer: A pointer is a variable which contains the address of another variable, i.e., address of the memory location of the variable. Like any variable or constant, we must declare a pointer before using it to store any variable address.
Syntax: 
 

type* var_name;

Example: 

C++




// The output of this program can be different
// in different runs. Note that the program
// prints address of a variable and a variable
// can be assigned different address in different
// runs.
 
#include <iostream>
 
int main()
{
    int x;
 
    // Prints address of x
    std::cout << &x;
 
    return 0;
}
 
// This code is contributed by sarajadhav12052009


C




// The output of this program can be different
// in different runs. Note that the program
// prints address of a variable and a variable
// can be assigned different address in different
// runs.
#include <stdio.h>
 
int main()
{
    int x;
 
    // Prints address of x
    printf("%p", &x);
 
    return 0;
}


Output: 

0x7ffcac5ae824

 

Iterator: An iterator is any object that, pointing to some element in a range of elements (such as an array or a container), has the ability to iterate through the elements of that range. 
Syntax: 
 

type_container :: iterator var_name;

Example: 

CPP




// C++ program to demonstrate iterators
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    // Declaring a vector
    vector<int> v = { 1, 2, 3 };
 
    // Declaring an iterator
    vector<int>::iterator i;
 
    int j;
 
    cout << "Without iterators = ";
 
    // Accessing the elements without using iterators
    for (j = 0; j < 3; ++j) {
        cout << v[j] << " ";
    }
 
    cout << "\nWith iterators = ";
 
    // Accessing the elements using iterators
    for (i = v.begin(); i != v.end(); ++i) {
        cout << *i << " ";
    }
 
    // Adding one more element to vector
    v.push_back(4);
 
    cout << "\nWithout iterators = ";
 
    // Accessing the elements without using iterators
    for (j = 0; j < 4; ++j) {
        cout << v[j] << " ";
    }
 
    cout << "\nWith iterators = ";
 
    // Accessing the elements using iterators
    for (i = v.begin(); i != v.end(); ++i) {
        cout << *i << " ";
    }
 
    return 0;
}


Output: 

Without iterators = 1 2 3 
With iterators = 1 2 3 
Without iterators = 1 2 3 4 
With iterators = 1 2 3 4

 

Difference between Iterators and Pointers: 
Iterators and pointers are similar in that we can dereference them to get a value. However, there are key differences as follows:
 

Pointers Iterators
A pointer hold an address in memory. An iterator may hold a pointer, but it may be something much more complex. For example, an iterator can iterate over data that’s on file system, spread across many machines, or generated locally in a programmatic fashion. 
A good example is an iterator over linked list, the iterator will move through elements that are at nodes in the list whose addresses in RAM may be scattered.
We can perform simple arithmetic on pointers like increment, decrement, add an integer etc. Not all iterators allow these operations, e.g., we cannot decrement a forward-iterator, or add an integer to a nonrandom-access iterator.
A pointer of type T* can point to any type T object. An iterator is more restricted, e.g., a vector::iterator can only refer to doubles that are inside a vector container.
We can delete a pointer using delete Since an iterator refers to objects in a container, unlike pointers, there’s no concept of delete for an iterator. (The container is responsible for memory management.) 
 

 


Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!

Last Updated : 16 Jun, 2022
Like Article
Save Article
Similar Reads