In this blog post, you will learn how to Print a 2D Vector in C++ with the help of C++ programs. I have already written an article “how to initialize a vector in C++“, you can check.
Now comes the topic of how we can print a 2D vector in C++. So, let’s get started,
Basically, a 2D vector is essentially a vector of vectors where each element is another vector.
For example,
vector<vector<int>> vec = {{1, 2}, {3, 4}};
Now let’s print the above mentioned 2D vector,
Method 1: Printing Without Range-Based For Loops (Using Index-Based Loops):
In this approach we use only traditional for loops to iterate over rows and the elements in those rows.
#include <iostream> #include <vector> using namespace std; int main() { // Initialize 2D vector vector<vector<int>> vec = {{1, 2}, {3, 4}}; // Outer loop: Iterate over the rows using index-based iteration for (int i = 0; i < vec.size(); ++i) { // Inner loop: Iterate over the elements in the row using index-based iteration for (int j = 0; j < vec[i].size(); ++j) { cout << vec[i][j] << " "; } cout << endl; // Move to the next line after each row } return 0; }
Output:
1 2
3 4
Explanation:
Outer Loop: The outer for loop iterates over the rows of the 2D vector by using the index “i” which ranges from 0 to vec.size() - 1
.
Inner Loop: The inner for loop iterates over the elements in each row using the index j, which ranges from 0 to vec[i].size() - 1
.
Output: The program prints each element followed by a space, and after printing each row, it moves to the next line using cout << endl.
Method 2: Using Traditional Loops for outer loop and Range-based For Loops for inner loops:
In this approach we use traditional for loops in combination of range based for loops.
#include <iostream> #include <vector> using namespace std; int main() { // Initialize 2D vector vector<vector<int>> vec = {{1, 2}, {3, 4}}; // Outer loop to iterate over rows for (int i = 0; i < vec.size(); ++i) { // Inner loop to iterate over elements in the row for (auto ptr : vec[i]) { cout << ptr << " "; } cout << endl; // Move to the next line after each row } return 0; }
Output:
1 2
3 4
Explanation:
Outer Loop: The outer for loop iterates over the rows of the 2D vector by using the index “i” which ranges from 0 to vec.size() - 1
.
Outer Loop: The outer loop uses a range-based for loop to iterate over each row. The const auto& ensures that each row is passed by reference and remains immutable.
Inner Loop: The inner loop iterates through each element of the current row using an iterator.
Output: Each element is printed followed by a space, and we print a newline after each row.
Method 3: Using Range-based For Loops:
In this approach we use range based for loops. This method is cleaner and more readable.
#include <iostream> #include <vector> using namespace std; int main() { // Initialize 2D vector vector<vector<int>> vec = {{1, 2}, {3, 4}}; // Range-based for loop to iterate over rows for (const auto& row : vec) { // Range-based for loop to iterate over elements in the row for (const auto& ptr : row) { cout << ptr << " "; } cout << endl; // Move to the next line after each row } return 0; }
Output:
1 2
3 4
Explanation:
Outer Loop: The outer loop uses a range-based for loop to iterate over each row and row elements. I used the const auto&
to ensures that each row is passed by reference and remains immutable.
Inner Loop: Inner loop also iterates over each element in the row.
Output: Each element is printed followed by a space, and we print a newline after each row.