<< All Cheat Sheets

C++ Containers Cheat Sheet

Key

X   = container class   a, b   = objects of class X
T   = class which is stored in X   t   = object of class T
n   = number   i, j   = iterators of any type  
p, q, hint  = iterators of type X  key  = object of key class for X
comp  = comparator object  pred  = predicate object
bin_pred  = binary predicate object  = container object being adapted

Containers

template<class T, class A=allocator<T> > class vector
template<class T, class A=allocator<T> > class list
template<class T, class A=allocator<T> > class deque
template<class T, class Compare=less<T>, class A=allocator<T> > class set
template<class T, class Compare=less<T>, class A=allocator<T> > class multiset
template<class Key, class Mapped, class Compare=less<Key>, class A=allocator<Mapped> > class map
template<class Key, class Mapped, class Compare=less<Key>, class A=allocator<Mapped> > class multimap
template<class T, class Traits=char_traits<T>, class A=allocator<T> > class basic_string
template<class T, class Hash=hash<T>, class Eq=equal_to<T>, class A=allocator<T> > class hash_set
template<class T, class Hash=hash<T>, class Eq=equal_to<T>, class A=allocator<T> > class hash_multiset
template<class Key, class Mapped, class Hash=hash<Key>, class Eq=equal_to<Key>, class A=allocator<Mapped> > class hash_map
template<class Key, class Mapped, class Hash=hash<Key>, class Eq=equal_to<Key>, class A=allocator<Mapped> > class hash_multimap
template<class T, class Container=deque<T> > class stack
template<class T, class Container=deque<T> > class queue
template<class T, class Container=vector<T>, class Compare=less<class Container::value_type> > class priority_queue

Expressions grouped by container requirements,      * = non-standard container

Container

Expression Return type vector list     deque basic string set     multi  set map   multi  map hash  set* hash  multi set* hash  map* hash  multi map* stack queue priority queue
X::value_type T O O O O O O O O O O O O O O O
X::reference lvaue of T O O O O O O O O O O O O      
X::const_reference const lvalue of T O O O O O O O O O O O O      
X::iterator iterator to T O O O O O O O O O O O O      
X::const_iterator iterator to const T O O O O O O O O O O O O      
X::difference_type signed integral type O O O O O O O O O O O O      
X::size_type unsigned integral type O O O O O O O O O O O O O O O
X a   O O O O O O O O O O O O O O O
X a(b)   O O O O O O O O O O O O O O O
a.~X()   O O O O O O O O O O O O O O O
a = b X& O O O O O O O O O O O O O O O
swap(a, b) void O O O O O O O O O O O O      
a == b convertible to bool O O O O O O O O O O O O O O O
a < b convertible to bool O O O O O O O O O O O O O O O
a.begin() iterator or const_iterator O O O O O O O O O O O O      
a.end() iterator or const_iterator O O O O O O O O O O O O      
a.size() size_type O O O O O O O O O O O O O O O
a.max_size() size_type O O O O O O O O O O O O      
a.empty() convertible to bool O O O O O O O O O O O O O O O
a.swap(b) void O O O O O O O O O O O O      

Reversable Container

Expression Return type vector list     deque basic string set     multi  set map   multi  map hash  set* hash  multi set* hash  map* hash  multi map* stack queue priority queue
X::reverse_iterator iterator to T O O O O O O O O O O O O      
X::const_reverse_iterator iterator to const T O O O O O O O O O O O O      
a.rbegin() reverse_iterator or const_reverse_iterator O O O O O O O O O O O O      
a.rend() reverse_iterator or const_reverse_iterator O O O O O O O O O O O O      

Sequence

Expression Return type vector list     deque basic string set     multi  set map   multi  map hash  set* hash  multi set* hash  map* hash  multi map* stack queue priority queue
X a(n, t)   O O O O                      
X a(i, j)   O O O O O O O O O O O O      
a.insert(p, t) iterator O O O O                      
a.insert(p, n, t) void O O O O                      
a.insert(p, i, j) void O O O O                      
a.erase(q) iterator O O O O                      
a.erase(p, q) iterator O O O O                      
a.clear() void O O O O O O O O O O O O      
a.back() reference or const_reference O O O                        
a.push_back(t) void O O O                        
a.pop_back() void O O O                        
a.front() reference or const_reference O O O                        
a.push_front(t) void   O O                        
a.pop_front() void   O O                        
a[n] reference or const_reference O   O O                      
a.at(n) reference or const_reference O   O O                      

Associative Container

Expression Return type vector list     deque basic string set     multi  set map   multi  map hash  set* hash  multi set* hash  map* hash  multi map* stack queue priority queue
X::key_type Key         O O O O O O O O      
X::key_compare Compare         O O O O              
X::value_compare           O O O O              
X a(comp)           O O O O              
X a   O O O O O O O O O O O O O O O
X a(i, j, comp)           O O O O             O
X a(i, j)           O O O O O O O O     O
a.key_comp() key_compare         O O O O              
a.value_comp() value_compare         O O O O              
a.insert(t) pair<iterator, bool>         O   O   O   O        
iterator           O   O   O   O      
a.insert(hint, t) iterator         O O O O              
a.insert(i, j) void         O O O O O O O O      
a.erase(key) size_type         O O O O O O O O      
a.erase(q) void         O O O O O O O O      
a.erase(p, q) void         O O O O O O O O      
a.clear() void O O O O O O O O O O O O      
a.find(key) iterator or const_iterator         O O O O O O O O      
a.count(key) size_type         O O O O O O O O      
a.lower_bound(k) iterator or const_iterator         O O O O              
a.upper_bound(k) iterator or const_iterator         O O O O              
a.equal_range(k) pair<iterator,
     iterator> or pair<const_iterator,
     const_iterator>
        O O O O              

Container Specific

Expression Return type vector list     deque basic string set     multi  set map   multi  map hash  set* hash  multi set* hash  map* hash  multi map* stack queue priority queue
a.get_allocator() allocator_type O O O O O O O O O O O O      
a.assign(p, q) void O O O O                      
a.resize(n) void O O O O                      
a.resize(n, t) void O O O O                      
a.assign(n, t) void O O O O                      
a.capacity() size_type O                            
a.reserve(n) void O                            
a.splice(p, b) void   O                          
a.splice(p, b, i) void   O                          
a.splice(p, b, i, j) void   O                          
a.remove(t) void   O                          
a.remove_if(pred) void   O                          
a.unique() void   O                          
a.unique(bin_pred) void   O                          
a.merge(b) void   O                          
a.merge(b, comp) void   O                          
a.reverse() void   O                          
a.sort(comp) void   O                          
X::mapped_type Mapped (T.second)             O O     O O      
a[key] mapped_type             O       O        
X::container_type Container                         O O O
X a(c)                           O O O
X a(comp, c)                               O
X a(i, j, comp, c)                               O
a.push(t) void                         O O O
a.pop() void                         O O O
a.top() T& or const T&                           O O
a.front() T& or const T&                         O    
a.back() T& or const T&                         O    

Choosing a Container