The iterator isn’t the best way to repeat through any STL compartment. There exists a superior and proficient method for emphasizing through vector without utilizing iterators. It tends to be iterated utilizing the qualities put away in any holder. The following is the sentence structure for something very similar for vectors:
Syntax:
for(auto itr : vector_name)
Clarification: Here itr is the worth put away in vector which is utilized to cross vectors. The following is the program to delineate something similar:
// C++ program to illustrate the above // topic #include <bits/stdc++.h> using namespace std; // Driver Code int main() { // Declare the vector vector< int > arr = { 1, 2, 3, 4 }; // Traversing the vector using // values directly for ( auto & it : arr) { // Print the values cout << it << ' ' ; } return 0; } |
1 2 3 4
Refreshing qualities in vector: For refreshing qualities in a vector without utilizing iterators cross the qualities put away in vector utilizing reference and refreshed the worth. The following is the sentence structure for something similar:
Syntax:
for(auto &itr : vector_name)
Clarification: Here itr is a location to the worth put away in vector which is utilized to cross vectors. The following is the program to outline something very similar:
// C++ program to illustrate the updation // in vector without using iterator #include <bits/stdc++.h> using namespace std; // Function to update the value in vector void updateVector(vector< int > arr) { cout << "Vector Before Update: " ; for ( auto & it : arr) { cout << it << ' ' ; } // Traverse using the reference to value // and multiply each value by 2 for ( auto & it : arr) { it *= 2; } cout << "\nVector After Update: " ; // Print vector elements for ( auto & it : arr) { cout << it << ' ' ; } } // Driver Code int main() { // Declare the vector vector< int > arr = { 1, 2, 3, 4 }; // Function Call updateVector(arr); return 0; } |
Vector Before Update: 1 2 3 4 Vector After Update: 2 4 6 8
Table of Contents
Benefits:
- Basic and simple to compose code.
- Preferred and productive over utilizing iterators strategy.
Hindrances:
- It repeats just in forward course.
- Keeps no counter i.e., We can’t track down the file of any component with this crossing. For counting the component, the counter need to taken expressly.
- We can likewise repeat involving similar crossing in various Containers in C++. The following are the representation for the equivalent:
Map:
// C++ program to illustrate the iteration // in Map without using iterator #include <bits/stdc++.h> using namespace std; // Driver Code int main() { // Declare the map map< int , int > Mp; // Inserting values in Map Mp[1] = 1; Mp[2] = 2; Mp[3] = 3; // Iterate using value in Map for ( auto it : Mp) { // Print the elements cout << it.first << ' ' << it.second << endl; } return 0; } |
1 1 2 2 3 3
Map of Vectors:
// C++ program to illustrate the iteration // in Map of vectors without using iterator #include <bits/stdc++.h> using namespace std; // Driver Code int main() { // Declare the map of vectors map< int , vector< int > > Mp; // Temporary vector vector< int > temp = { 1, 2, 3 }; // Inserting values in Map Mp[1] = temp; temp = { 2, 3, 8, 9 }; Mp[2] = temp; temp = { 10, -2 }; Mp[3] = temp; // Iterate using value in Map of vectors for ( auto it : Mp) { // Print the elements cout << it.first << " -> " ; // Traverse each vector map // with it.first and print the // elements for ( auto jt : it.second) { cout << jt << ' ' ; } cout << endl; } return 0; } |
1 -> 1 2 3 2 -> 2 3 8 9 3 -> 10 -2
Set:
// C++ program to illustrate the iteration // in set without using iterator #include <bits/stdc++.h> using namespace std; // Driver Code int main() { // Declare the set set< int > S; // Inserting values in set S.insert(3); S.insert(-1); S.insert(3); S.insert(4); // Iterate using value in set for ( auto it : S) { // Print the elements cout << it << ' ' ; } return 0; } |
-1 3 4
Deque:
// C++ program to illustrate the iteration // in deque without using iterator #include <bits/stdc++.h> using namespace std; // Driver Code int main() { // Declare the deque deque< int > dq; // Inserting values in deque dq.push_front(1); dq.push_front(2); dq.push_front(3); dq.push_back(4); dq.push_back(5); // Iterate using value in set for ( auto it : dq) { // Print the elements cout << it << ' ' ; } return 0; } |
3 2 1 4 5
Also Read: How to Learn Programming?