Array vs List (std::list) in C++
Point Array List
Fixed size. Cannot
1. Size change after Flexible size. Can grow or shrink easily.
creation.
Elements are
stored in a single,
2. Memory Elements are stored in separate chunks scattered in memory.
connected block
of memory.
Very fast. You can
3. Access Slow. You must start from the beginning and walk through to fi
directly jump to
Speed an element.
any element.
Slow and hard.
4. Insertion You have to move
Fast and easy. You just change the links between elements.
(Middle) many elements to
make space.
Slow and hard.
5. Deletion You have to move
Fast and easy. You just change the links and remove the eleme
(Middle) many elements to
fill the gap.
Efficient. Only
6. Memory Uses more memory. Each element needs extra space for "links
uses memory for
Usage the next element.
the data itself.
7. Ease of Simpler for basic,
More complex, but very powerful for changing data.
Use fixed-size data.
Point Array List
Faster for
8. Speed accessing and
Faster for adding and removing elements anywhere.
(Overall) changing known
elements.
Use when you
know how many
9. When to
items you have Use when you frequently add/remove items (e.g., a playlist).
Use
(e.g., days in a
week).
Cannot be
resized. You must
10. Resizing create a new, Can be resized automatically when you add or remove elemen
bigger array and
copy everything.
Less safe. Can
accidentally try to
Safer for adding/removing. You work with elements you know a
11. Safety access an
there.
element that
doesn't exist.
Like a row of fixed
12. Data lockers. Each Like a treasure hunt. Each clue points to the location of the nex
Structure locker has a clue.
number.
13.
Built into the core
Implementati Part of the C++ Standard Library (#include <list>).
language.
on
14. Element Elements are Elements are connected by pointers (memory addresses).
Point Array List
neighbors in
Relationship
memory.
Very fast because
the computer can
15. Iteration Slower because the computer has to follow pointers to differen
predict the next
Speed memory addresses.
element's
location.
Limited by fixed
16. Adding at size. May need to
Very easy. Just create a new element and link it to the last one
End create a whole
new array.
Very slow. Need
17. Adding at to move all Very easy. Just create a new element and make it point to the o
Beginning elements to make first one.
space at front.
Simple: int
18. Syntax arr[5] = More complex: Need functions like push_back(), remove()
{1,2,3,4,5};
Automatic.
19. Memory Memory is freed Manual. You need to be careful about memory leaks if using
Management when array goes pointers.
out of scope.
When you do lots
20. Best of reading and
When you do lots of adding and removing elements.
Performance accessing
elements.