about summary refs log tree commit diff
path: root/third_party/immer/doc/algorithms.rst
blob: f7de519c05d9b7d00e54d4a66364a250252b47af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

Algorithms
==========

This module provides overloads of standard algorithms that leverage
the internal structure of the immutable containers to provide faster
iteration. These are drop-in replacements of the respective STL
algorithms that can be a few times faster when applied on immutable
sequences.

For further convenience they can be passed in just a container where
the standard library algorithms require being passed in two iterators.

.. note::

   They are a similar idea to `structure-aware iterators`_
   but implemented using higher order functions in order to support
   structures of any depth.  The downside is that this sometimes
   causes the compiler to generate bigger executable files.

.. _structure-aware iterators: https://www.youtube.com/watch?v=T3oA3zAMH9M


-----

.. doxygengroup:: algorithm
   :project: immer
   :content-only: