Difference Between Array and Vector in C++

1. Introduction

In C++ programming, arrays and vectors are both used to store collections of elements. However, they have significant differences in terms of flexibility, memory management, and functionality. An array is a basic fixed-size sequence of elements, while a vector is a dynamic array provided by the C++ Standard Library with more functionality.

2. Key Points

1. Arrays have a fixed size determined at compile time.

2. Vectors are dynamic, allowing elements to be added or removed at runtime.

3. Arrays don’t offer built-in methods for manipulation like vectors do.

4. Vectors provide more safety and ease of use compared to arrays.

3. Differences

Array Vector
Fixed size, defined at compile time. Dynamic size, can grow or shrink at runtime.
Does not have built-in methods for handling elements. Provides a variety of methods for handling elements, like push_back, size, etc.
Less safe, as it doesn't check bounds. Safer, with bounds checking in debug mode.

4. Example

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // Array example
    int arr[3] = {1, 2, 3};
    cout << "Array elements: ";
    for(int i = 0; i < 3; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    // Vector example
    vector<int> vec = {1, 2, 3};
    vec.push_back(4);
    cout << "Vector elements: ";
    for(int num : vec) {
        cout << num << " ";
    }
    cout << endl;

    return 0;
}

Output:

Array elements: 1 2 3
Vector elements: 1 2 3 4

Explanation:

1. In the array example, arr is a fixed-size array that can hold three integers.

2. The vector vec starts with three elements but can dynamically grow, as seen with vec.push_back(4).

5. When to use?

- Use arrays when you have a fixed number of elements and you require performance, as arrays have less overhead compared to vectors.

- Use vectors when you need a flexible-size container, need to frequently add or remove elements, or want additional safety features and built-in functionalities.

Comments