Open In App

vector : : resize() in C++ STL

Vectors are known as dynamic arrays which can change its size automatically when an element is inserted or deleted. This storage is maintained by container.

vector::resize()

The function alters the container’s content in actual by inserting or deleting the elements from it. It happens so,

Syntax:

vectorname.resize(int n, int val)

Below programs illustrate the working of the function

1.Size of the vector container is lowered. 




// resizing of the vector
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> vec;
 
    // 5 elements are inserted
    // in the vector
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);
 
    cout << "Contents of vector before resizing:"
         << endl;
     
    // displaying the contents of the
    // vector before resizing
    for (int i = 0; i < vec.size(); i++)
        cout << vec[i] << " ";
 
    cout << endl;
 
    // vector is resized
    vec.resize(4);
 
    cout << "Contents of vector after resizing:"
         << endl;
     
    // displaying the contents of the
    // vector after resizing
    for (int i = 0; i < vec.size(); i++)
        cout << vec[i] << " ";
 
    return 0;
}

Output
Contents of vector before resizing:
1 2 3 4 5 
Contents of vector after resizing:
1 2 3 4 

2. Size of the vector container is increased. 




// resizing of the vector
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> vec;
 
    // 5 elements are inserted
    // in the vector
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);
 
    cout << "Contents of vector before resizing:"
         << endl;
     
    // displaying the contents of the
    // vector before resizing
    for (int i = 0; i < vec.size(); i++)
        cout << vec[i] << " ";
 
    cout << endl;
 
    // vector is resized
    vec.resize(8);
 
    cout << "Contents of vector after resizing:"
         << endl;
 
    // displaying the contents of
    // the vector after resizing
    for (int i = 0; i < vec.size(); i++)
        cout << vec[i] << " ";
 
    return 0;
}

Output
Contents of vector before resizing:
1 2 3 4 5 
Contents of vector after resizing:
1 2 3 4 5 0 0 0 

3.Size of the vector container is increased and new elements are initialized with specified value. 




// resizing of the vector
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> vec;
 
    // 5 elements are inserted
    // in the vector
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);
 
    cout << "Contents of vector before resizing:"
         << endl;
 
    // displaying the contents of
    // the vector before resizing
    for (int i = 0; i < vec.size(); i++)
        cout << vec[i] << " ";
 
    cout << endl;
 
    // vector is resized
    vec.resize(12, 9);
 
    cout << "Contents of vector after resizing:"
         << endl;
     
    // displaying the contents
    // of the vector after resizing
    for (int i = 0; i < vec.size(); i++)
        cout << vec[i] << " ";
 
    return 0;
}

Output
Contents of vector before resizing:
1 2 3 4 5 
Contents of vector after resizing:
1 2 3 4 5 9 9 9 9 9 9 9 

How to resize in case of 2D Vectors (Vector of Vector)?

Approach / Steps followed – Variety 1:

vector.resize(n, value);




//Resizing a 2D Vector / Matrix
#include <bits/stdc++.h>
using namespace std;
 
void displayMatrix(vector<vector<int>> v){
    int N = v.size();
    int M = v[0].size();
    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            cout<<v[i][j]<<" ";
        }
        cout<<"\n";
    }
}
 
int main()
{
     
    vector<vector<int>> v;
     
    cout<<"N: "<<v.size()<<"\n"; //4
     
    v.resize(4, vector<int> (4, -1));
     
    cout<<"N: "<<v.size()<<" M: "<<v[0].size()<<"\n"; //4
    displayMatrix(v);
 
    return 0;
}
//Code done by Balakrishnan R (rbkraj000)

Output
N: 0
N: 4 M: 4
-1 -1 -1 -1 
-1 -1 -1 -1 
-1 -1 -1 -1 
-1 -1 -1 -1 

Another Approach – Variety-2:




//Resizing a 2D Vector / Matrix
#include <bits/stdc++.h>
using namespace std;
 
void displayMatrix(vector<vector<int> > v)
{
    int N = v.size();
    int M = v[0].size();
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            cout << v[i][j] << " ";
        }
        cout << "\n";
    }
}
 
int main()
{
 
    vector<vector<int> > v;
 
    cout << "N: " << v.size() << "\n"; // 4
 
    v.resize(4);
    for (int i = 0; i < 4; i++)
        v[i].resize(4, -1);
    cout << "N: " << v.size() << " M: " << v[0].size()
         << "\n"; // 4
    displayMatrix(v);
 
    return 0;
}
//Code done by Balakrishnan R (rbkraj000)

Output
N: 0
N: 4 M: 4
-1 -1 -1 -1 
-1 -1 -1 -1 
-1 -1 -1 -1 
-1 -1 -1 -1 

The above 2 Approaches in this article is contributed by Balakrishnan R.


Article Tags :