Tutorialspoint.dev

2D vector in C++ with user defined size

A 2D vector is a vector of vector. Like 2D arrays, we can declare and assign values to 2D matrix

// C++ code to demonstrate 2D vector
#include <iostream>
#include <vector> // for 2D vector
using namespace std;
  
int main()
{
    // Initializing 2D vector "vect" with
    // values
    vector<vector<int> > vect{ { 1, 2, 3 },
                               { 4, 5, 6 },
                               { 7, 8, 9 } };
  
    // Displaying the 2D vector
    for (int i = 0; i < vect.size(); i++) {
        for (int j = 0; j < vect[i].size(); j++)
            cout << vect[i][j] << " ";
        cout << endl;
    }
  
    return 0;
}

Outout :

1 2 3 
4 5 6 
7 8 9 

Like Java’s jagged arrays, each row of 2D vector can contain different number of columns.



// C++ code to demonstrate 2D vector where
// each row is of different size.
#include <iostream>
#include <vector> // for 2D vector
using namespace std;
  
int main()
{
    // Initializing 2D vector "vect" with
    // different number of values in each
    // row.
    vector<vector<int> > vect{ { 1, 2 },
                               { 4, 5, 6 },
                               { 7, 8, 9, 10 } };
  
    // Displaying the 2D vector
    for (int i = 0; i < vect.size(); i++) {
        for (int j = 0; j < vect[i].size(); j++)
            cout << vect[i][j] << " ";
        cout << endl;
    }
  
    return 0;
}

Output :

1 2 
4 5 6 
7 8 9 10 

Exercise Problem : Define the 2D vector with different sizes of column input by user.
Examples:

Input : Number of rows : 5 
        Number of columns in rows : 
        2 3 4 5 1
Output : 1 2
         1 2 3
         1 2 3 4
         1 2 3 4 5 
         1

Input : Number of rows : 3
        Number of columns in rows : 
        3 2 1
Input : 3 3 2 1
Output : 1 2 3
         1 2
         1

First we take the input of row and and take the input of column of every row.
Now the initialize the memory of every row by the size of column.

// CPP program to create a 2D vector where 
// every row has 
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    // size of row
    int row = 5;
    int colom[] = { 5, 3, 4, 2, 1 };
  
    // Create a vector of vector with size
    // equal to row.
    vector<vector<int> > vec(row); 
  
    for (int i = 0; i < row; i++) {
  
        // size of column
        int col; 
        col = colom[i];
  
        // declare  the i-th row to size of column
        vec[i] = vector<int>(col);
        for (int j = 0; j < col; j++)
            vec[i][j] = j + 1;
    }
  
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < vec[i].size(); j++)
            cout << vec[i][j] << " ";
        cout << endl;
    }
}

Output:

1 2 3 4 5
1 2 3 
1 2 3 4
1 2
1

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter