array

## `array`

A `value` stores an instance of `array` as the underlying representation for a JSON array. Instances of the array type function identically to a `std::vector` of `value`. Additionally, all values inserted into the container will use the same `storage_ptr` as the container itself.

An empty array may be constructed without incurring any memory allocations using the default memory resource. A `storage_ptr` can also be explicitly specified:

    array arr1; // empty array, uses the default memory resource

    array arr2( make_shared_resource<monotonic_resource>() ); // empty array, uses a counted monotonic resource

Initializer lists can be used to construct objects with initial contents. These constructors may allocate memory and throw:

    array arr( { "Hello", 42, true } );

Alternatively, elements may be inserted after construction:

    array arr;

    arr.emplace_back( "Hello" );
    arr.emplace_back( 42 );
    arr.emplace_back( true );

Similar to its standard library counterpart, elements may be accessed directly by their 0-based index with bounds checking using `array::at`, or without bounds checking using `array::operator[]`:

    assert( arr[0].as_string() == "Hello" );

    // The following line throws system_error, since the index is out of range
    arr.at( 3 ) = nullptr;

For the complete listing of all available member functions and nested types, see the reference page for `array`.

## Formatted Output

When an `array` is formatted to a `std::ostream`, the result is a valid JSON. That is, the array will be output with square brackets and the comma separated list of values, as per the JSON specification.

Edit this page