| insert | delete | index | |||||||
|---|---|---|---|---|---|---|---|---|---|
| beg | mid | end | beg | mid | end | ||||
|
C++ Java Python Haskell |
sequential |
vector<T> ArrayList<E> list/tuple array |
O(n) | O(n) | ~O(1) | O(n) | O(n) | O(1) | O(1) |
|
deque<T> Deque<E> deque n/a |
~O(1) | O(n) | ~O(1) | O(1) | O(n) | O(1) | O(1) | ||
|
list<T> LinkedList<E> n/a list/tuple |
O(1) | O(1) | O(n) | ||||||
|
stack<T, C> Stack<E> n/a n/a |
n/a | n/a | n/a | ||||||
|
queue<T, C> Queue<E> n/a n/a |
n/a | n/a | n/a | ||||||
| hybrid |
priority_queue<T, C, P> PriorityQueue<E> heapq n/a |
O(log n) | O(log n) | n/a | |||||
| associative |
set<K, P> TreeSet<K> n/a Data.Set |
O(log n) | O(log n) | n/a | |||||
|
hash_set<K, HF, EP> HashSet<K> set/frozenset n/a |
~O(1) | ~O(1) | n/a | ||||||
|
map<K, V, P> TreeMap<K, V> n/a Data.Map |
O(log n) | O(log n) | n/a | ||||||
|
hash_map<K, V, HF, EP> HashMap<K, V> dict n/a |
~O(1) | ~O(1) | n/a | ||||||