EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

Iterator in C++

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » Iterator in C++

Iterator in C++

Introduction to Iterator in C++

Traversing through your highly complex data stored in different types of containers such as an Array, Vector, etc. in the smallest execution time is possible because of the Iterator in C++, a component of Standard Template Library (STL). Don’t worry it is just a pointer like an object but it’s smart because it doesn’t matter what container you are using, it will make your algorithm independent of Container type by providing a common interface for all types of container like a bridge between algorithm and container. Iterator not only reduces the complexity of a program instead makes execution time much faster.

For example, the sort()algorithm which has two parameters, ending and starting iterator will perform the sorting in order irrespective of what type of container you are using. Iterator allows the application of generic Algorithms to data structures. Data structures can use an Iterator to expose a range of elements.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Operations using the Iterator

  • begin(): This function will return an iterator pointing to the first element of the container.
  • end(): This function will return an iterator pointing to the past the last element of the container.
  • advance(): This function will increment an iterator position to the specified argument.
  • next(): This function will return the new iterator that will be pointed by iterator after incrementing the positions in the arguments.
  • previous(): This function will return the new iterator that will be pointed by iterator after decrementing the positions in the arguments.
  • inserter(): This function will insert the element at any position in the container.

Practical implementation

The practical implementation is as follows:

1. C++ code to implement the Iterator

Code:

#include <iostream>
#include<vector>
#include<iterator>
using namespace std;
int main()
{
//Declaring a Vector
std::vector<int> v{1,2,3,4,5,6,7};
//Declaring Iterator
vector<int>::iterator i;
//Function for iterating through vector elements
for(i=v.begin();i!=v.end();i++)
{
std::cout << *i <<" ";
}
return 0;
}

Output:

output 1 ( interator in C++)

2. C++ code to show iterator functionality

Code:

#include <iostream>
#include<vector>
#include<iterator>
using namespace std;
int main()
{
//Declaring a Vector
vector<int> v{1,2,3,4,5,6,7,8};
//Declaring Iterator
vector<int>::iterator i;
//Function
v.insert(v.begin()+1,10);
for(i=v.begin();i!=v.end();i++)   {
cout << *i <<" ";
}
return 0;
}

Output:

output 2 (iterator in C++)

Iterator Categories

As of C++ 17, there are 5 different types of Iterators that can be classified depending upon the type of functionality as shown in the flowchart below:

Categories

  • Input Iterator(stdin): Because of limited functionality they are weakest of all iterators with read-only and forward-moving functionality. It can’t modify the container value. Dereference operator(*),Not equal operator(!=), Increment operator(++) and Equal operator(==) can be used as input iterators. Also for sequential input operations.
  • Output Iterator(stdout): Iterator only for storing, write-only iterator which is used to modify the value of a container. They also have very limited functionality. Iterator cannot access the element. The assignment operator(=) and Increment operator(++) can be used as output iterators. Only in a single-pass algorithm.
  • Forward Iterator(singly linked list): This Iterator contains the functionality of both Input and Output Iterators. It can move forward in direction with one step at a time. For reading and writing to a container, it is the most preferred iterator which supports reusing and saving. It supports all the above operators.
  • Bidirectional Iterator(doubly linked list): As the name already suggests bi-directional which makes it stronger than the above iterators. It also supports reading and writing to a container. It supports the Decrement operator(–).
  • Random Access Iterator(arrays): Strongest iterator is the most powerful iterator as it can read, write and can access randomly. Pointer like functionality like the pointer addition and subtraction.

Advantages and Disadvantages of Iterator in C++

Following are the advantages and disadvantages given below.

Advantages

If you need to move from one element that iterator is currently pointing to another element that is potentially n steps away from your current iterator. The first four in the hierarchy will take a linear amount of time to do that while a random access iterator can do that in constant time and that is way more fascinating because that’s where time is saved. It is the most important feature that an Iterator provides. Some more are mentioned below

Popular Course in this category
C++ Training (4 Courses, 5 Projects, 4 Quizzes)4 Online Courses | 5 Hands-on Projects | 37+ Hours | Verifiable Certificate of Completion | Lifetime Access | 4 Quizzes with Solutions
4.5 (4,828 ratings)
Course Price

View Course

Related Courses
Java Training (40 Courses, 29 Projects, 4 Quizzes)C Programming Training (3 Courses, 5 Project)
  • Code Efficiency: If we have P kinds of containers of data and Q things we want to do with them, then we will end up writing P * Q algorithms. If the data is also of R different types then we might end up with the P * Q * R algorithm. So by using the iterators, we can do it in the P + Q algorithm. We saved 90% of the time and work. Taking efficiency of code to the next level. The concept behind efficiency is that input iterator over source and output iterator over the target sequence need not be of the same type.
  • Dynamic Processing: Iterators have dynamic functionalities such as swapping in the same container, Copy-assignable, incrementing, dereferencing and decrementing. The iterator provides the functionality to remove and dynamically add elements to the container. As all iterators can be incremented, input iterators can be compared and dereferenced to a value. Bidirectional iterators can be decremented. The main aspect is to write one function and use it for any container.

Disadvantages

  • You can’t move from one data structure to another at the same time in some complex way. Iterator won’t work in that case.
  • If you are processing through a list and you forgot something and now you want to go back then you can’t because iterators won’t work in that way.
  • In case you need to update structure during traversing, you can’t do that too because of the iterator way of storing its position.

Conclusion

While using iterators keep these two things always in mind for making code efficient. Always pass the iterator into a function instead of containers. You should never return containers instead of return or pass iterator. You can get any element using an iterator, dereference and passing a pair of the iterator to an algorithm

Recommended Articles

This is a guide to the Iterator in C++. Here we discuss operations in the iterator, categories, advantages, and disadvantages with codes and outputs. You can also go through our other related articles to learn more –

  1. Arrays in C++
  2. What is C++
  3. C++ Array Functions
  4. Loops in C++

C++ Training (4 Courses, 3 Projects, 4 Quizzes)

4 Online Courses

5 Hands-on Projects

37+ Hours

Verifiable Certificate of Completion

Lifetime Access

4 Quizzes with Solutions

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C plus plus Programming Tutorial
  • Basic
    • Introduction To C++
    • What is C++
    • Features of C++
    • Applications of C++
    • Best C++ Compiler
    • C++ Data Types
    • C++ Double
    • C++ unsigned int
    • User Defined Data Types in C++
    • Variables in C++
    • C++ Keywords
    • Pointers in C++
    • C++ Void Pointer
    • Function Pointer in C++
    • Iterator in C++
    • C++ Commands
    • Object in C++
    • C++ Literals
    • C++ Reference
    • C++ Undefined Reference
    • String in C++
    • C++ Programming Language (Basics)
    • C++ Identifiers
    • C++ Header Files
    • Type Casting in C++
    • C++ Formatter
  • Operators
    • C++ Operators
    • Arithmetic Operators in C++
    • Assignment Operators in C++
    • Bitwise Operators in C++
    • Relational Operators in C++
    • Boolean Operators in C++
    • Unary Operators in C++
    • C++ Operator[]
    • Operator Precedence in C++
    • C++ operator=()
  • Control Statements
    • Control Statement in C++
    • if else Statement in C++
    • Else If in C++
    • Nested if in C++
    • Continue Statement in C++
    • Break Statement in C++
    • Switch Statement in C++
    • goto Statement in C++
    • C++ Struct
    • Loops in C++
    • Do While Loop in C++
    • Nested Loop in C++
  • Functions
    • C++ String Functions
    • Math Functions in C++
    • Friend Function in C++
    • Recursive Function in C++
    • Virtual Functions in C++
    • strcat() in C++
    • swap() in C++
    • strcmp() in C++
    • ceil function in C++
    • C++ begin()
    • size() in C++
    • C++ test()
    • C++ any()
    • C++ Bitset
    • C++ find()
    • C++?Aggregation
    • C++?String append
    • C++ String Copy
    • C++ end()
    • C++ endl
    • C++ push_back
    • C++ shuffle()
    • malloc() in C++
    • C++ reserve()
    • C++ unique()
    • C++ sort()
    • C++ find_if()
    • Reflection in C++
    • C++ replace()
    • C++ search()
    • C++ Memset
    • C++ size_t
    • C++ Substring
    • C++ Max
    • C++ absolute value
    • C++ memcpy
    • C++ wchar_t
    • C++ free()
    • C++ sizeof()
    • C++ Move Semantics
  • Array
    • Arrays in C++
    • 2D Arrays in C++
    • 3D Arrays in C++
    • Multi-Dimensional Arrays in C++
    • C++ Array Functions
    • String Array in C++
    • C++ Length of Array
    • C++ arraylist
  • Constuctor and Destructor
    • Constructor and Destructor in C++
    • Constructor in C++
    • Destructor in C++
    • Copy Constructor in C++
    • Parameterized Constructor in C++
  • Overloading and overriding
    • Overloading and Overriding in C++
    • Overloading in C++
    • Overriding in C++
    • Function Overloading in C++
    • Function Overriding in C++
    • Method Overloading in C++
  • Inhertiance
    • Types of Inheritance in C++
    • Single Inheritance in C++
    • Multiple Inheritance in C++
    • Hierarchical Inheritance in C++
    • Multilevel Inheritance in C++
    • Hybrid Inheritance in C++
  • Sorting
    • Sorting in C++ 
    • Heap Sort in C++
    • C++ Vector Sort
    • Insertion Sort in C++
    • Selection Sort in C++
  • Advanced
    • C++ namespace
    • Encapsulation in C++
    • Access Modifiers in C++
    • Abstract Class in C++
    • C++ Class and Object
    • What is Template Class in C++?
    • C++ Algorithm
    • Data Structures and Algorithms C++
    • C++ Garbage Collection
    • Virtual Keyword in C++
    • Access Specifiers in C++
    • Storage Class in C++
    • Call by Value in C++
    • Multimap in C++
    • C++ Multiset
    • C++ Lambda Expressions
    • Stack in C++
    • C++ Static
    • C++ static_cast
    • Deque in C++
    • C++ Vector Functions
    • C++ 2D Vector
    • C++ List
    • C++ Mutable
    • Enum in C++
    • Abstraction in C++
    • Signal in C++
    • C++ Queue
    • Priority Queue in C++
    • Regular Expressions in C++
    • C++ Hash Table
    • File Handling in C++
    • C++ Stream
    • ifstream in C++
    • C++ ofstream
    • C++ fstream
    • C++ Read File
    • C++ iomanip
    • Macros in C++
    • Templates in C++
    • C++ setprecision
    • C++ Int to String
    • C++ thread( )
    • C++ Thread Pool
    • C++ thread_local
  • Programs
    • Patterns in C++
    • Star Patterns In c++
    • Swapping in C++
    • Reverse Number in C++
    • Palindrome Program in C++
    • Palindrome in C++
    • Factorial Program in C++
    • Fibonacci Series in C++
    • Square Root in C++
    • Random Number Generator in C++
    • Prime Number in C++
    • Leap Year Program in C++
    • Anagram in C++
    • Armstrong Number in C++
    • Reverse String in C++
    • Socket Programming in C++
    • Matrix Multiplication in C++
    • C++ using vs typedef
    • C++ vector vs list
    • C++ vector vs array
  • Interview question
    • C++ Interview Questions
    • Multithreading Interview Questions C++

Related Courses

C++ Training Course

Java Training Course

C Programming Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C++ Training (4 Courses, 3 Projects, 4 Quizzes) Learn More