Difference Between List and Vector in C++

1. Introduction

In C++ programming, both list and vector are part of the Standard Template Library (STL) and are used to store collections of objects. However, they have significant differences in terms of their underlying data structures and performance characteristics. A vector is a dynamic array, while a list is a doubly-linked list.

2. Key Points

1. vector provides random access to elements, which means elements can be accessed directly by their position index.

2. list allows efficient insertion and deletion of elements anywhere in the sequence.

3. vector stores elements in contiguous memory locations, making it efficient for access but costly for insertions and deletions in the middle.

4. list stores elements in non-contiguous memory, allowing quick insertions and deletions but slower random access.

3. Differences

vector list
Supports random access. Does not support random access.
Efficient in accessing elements. Efficient in inserting and deleting elements.
Stores elements in contiguous memory. Stores elements in non-contiguous memory.

4. Example

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

int main() {
    // Vector example
    vector<int> v = {1, 2, 3};
    cout << "Vector elements: ";
    for(int n : v) {
        cout << n << " ";
    cout << endl;

    // List example
    list<int> l = {1, 2, 3};
    cout << "List elements: ";
    for(int n : l) {
        cout << n << " ";
    cout << endl;

    return 0;


Vector elements: 1 2 3 4
List elements: 1 2 3 4


1. The vector v allows for fast access to its elements and is efficient in appending an element at the end.

2. The list l allows for quick insertions and deletions, but accessing elements is less efficient compared to the vector.

5. When to use?

- Use vector when you need efficient access to elements by their index, and when insertions and deletions are mostly at the end of the sequence.

- Use list when you need to frequently insert and delete elements at any position within the sequence.

Related C++/CPP Posts:

Difference Between Struct and Class in C++

Difference Between Pointer and Reference in C++

Difference Between null and nullptr in C++

Difference Between Array and Vector in C++

Difference Between const and constexpr in C++

Difference Between List and Vector in C++

Difference Between C and C++

Difference Between Function Overloading and Operator Overloading in C++

Difference Between Array and List in C++

Difference Between a While Loop and a Do-While Loop in C++

Difference Between new and malloc C++

Virtual Function vs Pure Virtual Function in C++

Compile Time Polymorphism vs Runtime Polymorphism in C++

Difference Between Shallow Copy and Deep Copy in C++

Difference Between Stack and Heap in C++

Copy Constructor vs Parameterized Constructor in C++