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,
- If the given value of n is less than the size at present then extra elements are demolished.
- If n is more than current size of container then upcoming elements are appended at the end of the vector.
Syntax:
vectorname.resize(int n, int val)
Below programs illustrate the working of the function
1.Size of the vector container is lowered.
CPP
// 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.
CPP
// 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.
CPP
// 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:
- We can first resize the outer container vector<vector<int>>
- By doing that, we made it like { { }, { }, { } }
- Then we would initialize the internal container.
vector.resize(n, value);
C++
//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:
C++
//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.
Contact Us