C++ concepts: SequenceContainer
From cppreference.com
                    
                                        
                    
                    
                                                            
                    A SequenceContainer is a Container that stores objects of the same type in a linear arrangement.
| Contents | 
[edit] Requirements
| Legend | |
| X | Container type | 
| T | Element type | 
| a,b | Objects of type X | 
| t | Object of type T | 
| n | Positive integer | 
| i,j | InputIterators denoting a valid range | 
| il | std::initializer_list<T> | 
| args | Parameter pack | 
| p,q | const_iterators in a | 
| expression | return type | effects | precondition | postcondition | 
|---|---|---|---|---|
| X(n,t) | Constructs a SequenceContainercontainingncopies oft | T CopyInsertable | std::distance(begin(),end()) == n | |
| X(i,j) | Constructs a SequenceContainerequivalent to the range[i,j) | 
 | std::distance(begin(),end()) == std::distance(i,j) | |
| X(il) | X(il.begin(),il.end()) | |||
| a = il | X& | Assigns the range represented by ilintoa | T CopyInsertableandCopyAssignable | Existing elements of aare destroyed or assigned to | 
| a.emplace(p,args) | iterator | Insert an object constructed with std::forward<Args>(args) before p | 
 | |
| a.insert(p,t) | iterator | Inserts a copy of tbeforep | 
 | |
| a.insert(p,n,t) | iterator | Inserts ncopies oftbeforep | T CopyInsertableandCopyAssignable | |
| a.insert(p,i,j) | iterator | Inserts copies of elements in [i, j)beforep | 
 | Each iterator in [i,j)is dereferenced once | 
| a.insert(p, il) | iterator | a.insert(p,il.begin(),il.end()) | ||
| a.erase(q) | iterator | Erases the element pointed to by q | (std::deque, std::vector) T MoveAssignable | |
| a.erase(p,q) | iterator | Erases elements in [p,q) | (std::deque, std::vector) T MoveAssignable | |
| a.clear() | void | Destroys all elements in a | 
 | |
| a.assign(i,j) | void | Replaces elements in a with a copy of [i, j) | 
 | Each iterator in [i,j)is dereferenced once | 
| a.assign(il) | void | a.assign(il.begin(),il.end()) | ||
| a.assign(n,t) | void | Replaces elements in awithncopies oft | T CopyInsertableandCopyAssignable | 
[edit] Optional Operations
| This section is incomplete | 
[edit] SequenceContainers in the standard library
| (since C++11) | static contiguous array (class template) | 
| dynamic contiguous array (class template) | |
| double-ended queue (class template) | |
| (since C++11) | singly-linked list (class template) | 
| doubly-linked list (class template) | 
[edit] Trade-offs / usage notes
| std::array | Fast access but fixed number of elements | 
| std::vector | Fast access but mostly inefficient insertions/deletions | 
| std::list std::forward_list | Efficient insertion/deletion in the middle of the sequence | 
| std::deque | Efficient insertion/deletion at the beginning and at the end of the sequence |