| Home | Libraries | People | FAQ | More

###### array::swap (1 of 2 overloads)

Exchange the given values.

###### Synopsis

Defined in header `<boost/json/array.hpp>`

    void
    swap(
        array& lhs,
        array& rhs);

###### Description

Exchanges the contents of the array `lhs` with another array `rhs`. Ownership of the respective `memory_resource` objects is not transferred.

- If `*lhs.storage() == *rhs.storage()`, ownership of the underlying memory is swapped in constant time, with no possibility of exceptions. All iterators and references remain valid.
- If `*lhs.storage() != *rhs.storage()`, the contents are logically swapped by making a copy, which can throw. In this case all iterators and references are invalidated.

###### Effects

    lhs.swap( rhs );

###### Complexity

Constant or linear in `lhs.size() + rhs.size()`.

###### Exception Safety

Strong guarantee. Calls to `memory_resource::allocate` may throw.

###### Parameters

Name | Description
--- | ---
`lhs` | The array to exchange.
`rhs` | The array to exchange. If `&lhs == &rhs`, this function call has no effect.

###### See Also

`array::swap`

Convenience header `<boost/json.hpp>`