Initializing Vector using an Existing Vector in C++ STL
A vector is a type of container which can store objects of similar data type. Vector acts like a dynamic array where we can insert elements and the size of the array increases depending upon the elements inserted.
Syntax:
vector<data_structure/type> vector_name(size, item)
To know more about vectors refer to vectors in C++.
The 3D vector in C++
A 3D vector is a type of multidimensional vector having 3 dimensions. It can also be interpreted as a vector with a collection of 2D vectors inside it.
Syntax:
vector<vector<vector<int>>> v;
Example:
1 D vector -> { 1 , 2, 3 }
2 D vector -> { { 1,2,3 } , {4,5,6} }
3 D vector -> { { { 1,2,3 } , {4,5,6} } , { { 11,12,13 } , {14,15,16} } , { { 21,22,23 } , {24,25,26} } }
Below is the code of the example:
C++
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector< int > a = { 1, 2, 3 };
cout<< "1D vector\n" ;
for ( int i = 0; i < a.size(); i++) {
cout << a[i] << " " ;
}
vector<vector< int > > b = { { 1, 2, 3 }, { 4, 5, 6 } };
cout<< "\n\n2D vector\n" ;
for ( int i = 0; i < b.size(); i++) {
for ( int j = 0; j < b[0].size(); j++) {
cout << b[i][j] << " " ;
}
cout << endl;
}
vector<vector<vector< int > > > c = {
{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } },
{ { 11, 12, 13 }, { 14, 15, 16 }, { 17, 18, 19 } },
{ { 21, 22, 23 }, { 24, 25, 26 }, { 27, 28, 29 } }
};
cout<< "\n\n3D vector\n" ;
cout << "[\n" ;
for ( int i = 0; i < c.size(); i++) {
for ( int j = 0; j < c[0].size(); j++) {
cout << " [ " ;
for ( int k = 0; k < c[0][0].size(); k++) {
cout << c[i][j][k] << " " ;
}
cout << "]" ;
}
cout << endl;
}
cout << "]" ;
return 0;
}
|
Output
1D vector
1 2 3
2D vector
1 2 3
4 5 6
3D vector
[
[ 1 2 3 ] [ 4 5 6 ] [ 7 8 9 ]
[ 11 12 13 ] [ 14 15 16 ] [ 17 18 19 ]
[ 21 22 23 ] [ 24 25 26 ] [ 27 28 29 ]
]
Copying vector elements in a new vector
It is the method where we can insert the values of the existing vector into the newly created vector during Initialisation.
Syntax:
vector<vector<vector<int>>> v2(v1.begin(),v2.end());
Example:
vector<vector<vector<int>>> v1={ { { 1, 2 }, { 3, 4 } },
{ { 5, 6 }, { 7, 8 } } }; // 3D vector original
vector<vector<vector<int>>> v2; // ( Copy elements of v1 inside v2 )
Code:
C++
#include <bits/stdc++.h>
using namespace std;
void display(vector<vector<vector< int > > >& v)
{
for ( int i = 0; i < v.size(); i++) {
cout << "i : " << i << endl;
for ( int j = 0; j < v[i].size(); j++) {
for ( int k = 0; k < v[i][j].size(); k++)
cout << v[i][j][k] << " " ;
cout << endl;
}
cout << endl;
}
}
int main()
{
vector<vector<vector< int > > > v
= { { { 1, 2 }, { 3, 4 } },
{ { 5, 6 }, { 7, 8 } } };
vector<vector<vector< int > > > vect(v.begin(), v.end());
display(vect);
}
|
Output
i : 0
1 2
3 4
i : 1
5 6
7 8
Time Complexity: O(n)
Here n is the number of elements in the original vector.
Auxiliary Space: O(n)
Copying vector elements using copy function in C++ STL
It is the method where we can insert the values of the existing vector into the newly created vector using copy() function in C++.
Syntax:
copy(first_iterator, last_iterator, back_inserter())
Example:
vector<vector<vector<int> > > v = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }; // Original 3-D vector
copy(v.begin(), v.end(), back_inserter(vect)); // Copying vector elements to another vector by using copy() function
Code:
C++
#include <bits/stdc++.h>
using namespace std;
void display(vector<vector<vector< int > > >& v)
{
for ( int i = 0; i < v.size(); i++) {
cout << "i : " << i << endl;
for ( int j = 0; j < v[i].size(); j++) {
for ( int k = 0; k < v[i][j].size(); k++)
cout << v[i][j][k] << " " ;
cout << endl;
}
cout << endl;
}
}
int main()
{
vector<vector<vector< int > > > v
= { { { 1, 2 }, { 3, 4 } },
{ { 5, 6 }, { 7, 8 } } };
vector<vector<vector< int > > > vect;
copy(v.begin(), v.end(), back_inserter(vect));
display(vect);
}
|
Output
i : 0
1 2
3 4
i : 1
5 6
7 8
Time Complexity: O(n)
Here n is the number of elements in the original vector.
Auxiliary Space: O(n)
Last Updated :
08 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...