Containers in C++ STL

Last Updated : 30 May, 2026

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.

OperationDescription
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

Array

Container that wraps over fixed size static array.

Vector

Automatically resizable dynamic array.

Deque

Dynamic array of fixed-size arrays that allows fast insertions and deletions at both ends.

List

Implementation of Doubly Linked List data structure.

Forward List

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

Set

Collection of unique elements sorted on the basis of their values.

Map

Collection of key-value pairs sorted on the basis of the keys where no two pairs have same keys.

Multiset

Collection of elements sorted on the basis of their values but allows multiple copies of values.

Multimap

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

Unordered Set

Collection of unique elements hashed by their values.

Unordered Map

Collection of key-value pairs that are hashed by their keys where no two pairs have same keys.

Unordered Multiset

Collection of elements hashed by their values and allows multiple copies of values.

Unordered Multimap

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

Stack

Adapts a container to provide stack (LIFO) data structure.

Queue

Adapts a container to provide queue (FIFO) data structure.

Priority Queue

Adapts a container to provide heap data structure.

Comment