The Standard Template Library (STL) provides built-in implementations of commonly used data structures known as containers. A container is an object that stores and manages a collection of elements, making it easier to organize and manipulate data efficiently.
- Provide ready-to-use implementations of commonly used data structures, reducing development time
- Support efficient storage, retrieval, insertion, and deletion of elements through built-in member functions
- Implemented as class templates, allowing the same container to work with different data types
Common Operations on STL Containers
Most STL containers support a common set of operations for managing and accessing elements.
| Operation | Description |
|---|---|
| insert() | Adds an element to the container |
| erase() | Removes an element from the container |
| size() | Returns the number of elements in the container |
| empty() | Checks whether the container is empty |
| clear() | Removes all elements from the container |
| begin() | Returns an iterator to the first element |
| end() | Returns an iterator to the position after the last element |
Types of Containers in C++ STL
STL containers are broadly classified into four categories based on how they store and organize elements.
1. Sequence Containers
Sequence containers implement linear data structures in which the elements can be accessed sequentially. Following are the sequence containers in C++ STL:
Container Name | Description |
|---|---|
Container that wraps over fixed size static array. | |
Automatically resizable dynamic array. | |
Dynamic array of fixed-size arrays that allows fast insertions and deletions at both ends. | |
Implementation of Doubly Linked List data structure. | |
Implementation of Singly Linked List data structure. |
2. Associative Containers
Associative containers store data in some sorted order. It provides fast search, insert and delete in O(log n) time by using balanced trees like Red Black Trees.
Container Name | Description |
|---|---|
Collection of unique elements sorted on the basis of their values. | |
Collection of key-value pairs sorted on the basis of the keys where no two pairs have same keys. | |
Collection of elements sorted on the basis of their values but allows multiple copies of values. | |
Collection of key-value pairs sorted on the basis of the keys where multiple pairs can have same keys. |
3. Unordered Associative Containers
Unordered associative containers implement unsorted hashed data structures that can be quickly searched (O(1) amortized, O(n) worst-case complexity).
Container Name | Description |
|---|---|
Collection of unique elements hashed by their values. | |
Collection of key-value pairs that are hashed by their keys where no two pairs have same keys. | |
Collection of elements hashed by their values and allows multiple copies of values. | |
Collection of key-value pairs that are hashed by their keys where multiple pairs can have same keys. |
4. Container Adapters
Container adapters provide a different interface for other containers. They adapt the behavior of underlying containers to fit specific use cases.
Container Name | Description |
|---|---|
Adapts a container to provide stack (LIFO) data structure. | |
Adapts a container to provide queue (FIFO) data structure. | |
Adapts a container to provide heap data structure. |