# Iterators

## Overview

A JSON value is a container and allows access via iterators. 

![](../images/range-begin-end.svg)

![](../images/range-rbegin-rend.svg)

## Iterator getters

### `begin()`

??? example

    The following code shows an example for `begin()`.

    ```cpp
    --8<-- "examples/begin.cpp"
    ```
    
    Output:

    ```json
    --8<-- "examples/begin.output"
    ```

### `cbegin()`

??? example

    The following code shows an example for `cbegin()`.

    ```cpp
    --8<-- "examples/cbegin.cpp"
    ```
    
    Output:

    ```json
    --8<-- "examples/cbegin.output"
    ```

### `end()`

??? example

    The following code shows an example for `end()`.

    ```cpp
    --8<-- "examples/end.cpp"
    ```
    
    Output:

    ```json
    --8<-- "examples/end.output"
    ```

### `cend()`

??? example

    The following code shows an example for `cend()`.

    ```cpp
    --8<-- "examples/cend.cpp"
    ```
    
    Output:

    ```json
    --8<-- "examples/cend.output"
    ```

### `rbegin()`

??? example

    The following code shows an example for `rbegin()`.

    ```cpp
    --8<-- "examples/rbegin.cpp"
    ```
    
    Output:

    ```json
    --8<-- "examples/rbegin.output"
    ```

### `rend()`

??? example

    The following code shows an example for `rend()`.

    ```cpp
    --8<-- "examples/rend.cpp"
    ```
    
    Output:

    ```json
    --8<-- "examples/rend.output"
    ```

### `items()`

??? example

    The following code shows an example for `items()`.

    ```cpp
    --8<-- "examples/items.cpp"
    ```
    
    Output:

    ```
    --8<-- "examples/items.output"
    ```

## Iterator invalidation

| Operations | invalidated iterators |
| ---------- | --------------------- |
| `clear`    | all                   |