ADVERTISEMENT
ADVERTISEMENT

Initialize a vector in C++ in different ways

C++ STL | Initializing a vector: Here, we are going to learn about the various methods to initialize a vector in C++ with examples.
Submitted by Radib Kar, on July 07, 2020

Vector in C++ STL in one of the most convenient data structure which can be used as a dynamic array. There are several ways to define a vector in C++ and here we discuss all of them in detail.

1D vector in brief

A 1D vector is a linear data structure having exactly similar features like a 1D array. Vector has added advantage of dynamic features which helps it to grow at runtime, which means extending dynamically. Now to initialize a vector there have been several methods like below,

1) Define empty vector and then push_back() as required

This is the most naïve approach to initialize a vector. Firstly, we just define an empty vector. At that point, it has no idea about how many elements it’s going to have. Then by using push_back() function we can simply keep adding elements at the back as per requirement.

Below is an example to add elements as per user wants.

#include <bits/stdc++.h>
using namespace std;

int main()
{
    //empty vector initialized
    vector<int> arr;

    cout << "Enter 0 stop appending element\n";
    cout << "Append any other number\n";
    int a;
    cin >> a;

    while (a) {
        arr.push_back(a);
        cout << "press 0 to stop appending\n";
        cout << "append any other number\n";
        cin >> a;
    }

    cout << "printing the vector...\n";
    //print the vector
    for (auto i : arr)
        cout << i << " ";
    cout << endl;

    return 0;
}

Output:

Enter 0 stop appending element
Append any other number 
4 
press 0 to stop appending 
append any other number 
2 
press 0 to stop appending 
append any other number 
-3
press 0 to stop appending 
append any other number 
6 
press 0 to stop appending 
append any other number 
0 
printing the vector...
4 2 -3 6 

2) Initialize the vector with user defined size

We can initialize the vector with user-defined size also. It's quite similar like creating a dynamic array using malloc() or new operator. This initializes the vector with element 0 by default.

Below is the example:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
 
    cout << "Enter vector size:\n";
    cin >> n;
 
    //by default it initializes with 0
    vector<int> arr(n); 
 
    cout << "Printing the vector...\n";
    for (auto i : arr)
        cout << i << " ";
    cout << endl;
 
    return 0;
}

Output:

Enter vector size:
5
Printing the vector...
0 0 0 0 0 

3) Initialize with user defined size and user defined element

Here instead of initializing with default 0, we initialize with user-defined value

The syntax is,

vector<int> arr(size_t, value);

Creates a vector of size size_t all initialized with value.

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n, a;
 
    cout << "Enter vector size:\n";
    cin >> n;
 
    cout << "Enter your element that you want to initialize\n";
    cin >> a;
 
    //by default it initializes with 0
    vector<int> arr(n, a); 
 
    cout << "Printing the vector...\n";
    for (auto i : arr)
        cout << i << " ";
    cout << endl;
 
    return 0;
}

Output:

Enter vector size:
5
Enter your element that you want to initialize
2
Printing the vector...
2 2 2 2 2

4) Initialize with user defined elements

We can also initialize the vector with user-defined elements.

The syntax would be:

vector<int> arr{comma separated elements};

The example is below:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    //initialize with user-defined elements
    vector<int> arr{ 1, 2, 3, 4, 5, -1, -2, 6 };
 
    cout << "Printing the vector...\n";
    for (auto i : arr)
        cout << i << " ";
    cout << endl;
 
    return 0;
}

Output:

Printing the vector...
1 2 3 4 5 -1 -2 6

5) Initializing a vector with elements of other vector

We can also initialize a vector using elements of another vector. The vector is passed as constructor to initialize the new vector. This is a deep copy indeed.

The example is like below:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    //initialize with user-defined elements
    vector<int> arr1{ 1, 2, 3, 4, 5, -1, -2, 6 };
 
    cout << "Printing the vector arr1...\n";
    for (auto i : arr1)
        cout << i << " ";
    cout << endl;

    //initialize another vector with this vector
    vector<int> arr2(arr1);

    cout << "Printing the vector arr2...\n";
    for (auto i : arr2)
        cout << i << " ";
    cout << endl;

    return 0;
}

Output:

Printing the vector arr1...
1 2 3 4 5 -1 -2 6
Printing the vector arr2...
1 2 3 4 5 -1 -2 6

6) Initialize by an array

We can also initialize the vector using an existing array.

The example is like below:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    //static array
    int arr[8] = { 1, 2, 3, 4, 5, -1, -2, 6 };

    //initialize with array elements

    vector<int> vect(arr, arr + 8);

    cout << "Printing the vector...\n";
    for (auto i : vect)
        cout << i << " ";
    cout << endl;

    return 0;
}

Output:

Printing the vector...
1 2 3 4 5 -1 -2 6

This is all the way you can initialize a vector as per your choice. Before finishing a few more things to note:

The first thing is we can assign elements to vector similarly as array (dynamically allocated), but to do that we cant initialize vector empty, need to initialize along with its size. For an empty vector, memory is not allocated for vector elements. Thus we need to initialize with user-defined size first.

The below code gives segmentation fault whereas the second code works fine.

#include <bits/stdc++.h>
using namespace std;

int main()
{
    //define vector
    vector<int> arr;
 
    //trying to assign like array
    arr[0] = 1;
 
    //segmentation fault if 
    //we try to assign like this
    return 0;
}

Output:

Segmentation fault (core dumped)
#include <bits/stdc++.h>
using namespace std;

int main()
{
    //define vector with size which allocates 
    //memory and initializes with 0
    vector<int> arr(2);
    
    //trying to assign like array
    arr[0] = 1;
    
    //works fine
    cout << "works fine\n";
    
    return 0;
}

Output:

works fine
ADVERTISEMENT



ADVERTISEMENT



Comments and Discussions


ADVERTISEMENT

ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT

Languages: » C » C++ » C++ STL » Java » Data Structure » C#.Net » Android » Kotlin » SQL
Web Technologies: » PHP » Python » JavaScript » CSS » Ajax » Node.js » Web programming/HTML
Solved programs: » C » C++ » DS » Java » C#
Aptitude que. & ans.: » C » C++ » Java » DBMS
Interview que. & ans.: » C » Embedded C » Java » SEO » HR
CS Subjects: » CS Basics » O.S. » Networks » DBMS » Embedded Systems » Cloud Computing
» Machine learning » CS Organizations » Linux » DOS
More: » Articles » Puzzles » News/Updates

© https://www.includehelp.com some rights reserved.