# fn() arrayCopyBackward
Copies a range of objects into another range of objects starting from the last element.

Defined in | <seqan/basic.h>
Signature | `void arrayCopyBackward(source_begin, source_end, target);`

## Parameters

`sourceBegin` | Iterator to the first element of the source array.
`sourceEnd` | Iterator behind the last element of the source array. `sourceEnd` must have the same type as `source_begin`.
`target` | Iterator to the first element of the target array. The target capacity should be at least as long as the source range.

## Detailed Description

Be careful if source and target range overlap, because in this case some source elements could be accidently overwritten before they are moved.

If source and target do not overlap, consider to use the function arrayCopyForward instead that is faster in some cases.

If there is no need for the source elements to persist, consider to use arrayMoveBackward instead to improve performance.

The semantic of this function's argument `target` differ from the arguments of `std::copy_backward`.

## Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

#### Dox Sources

    /*!
     * @fn arrayCopyBackward
     *
     * @headerfile <seqan/basic.h>
     *
     * @brief Copies a range of objects into another range of objects starting from
     *        the last element.
     *
     * @signature void arrayCopyBackward(source_begin, source_end, target);
     *
     * @param[in] sourceBegin Iterator to the first element of the source array.
     * @param[in] sourceEnd Iterator behind the last element of the source array.
     *                      <tt>sourceEnd</tt> must have the same type as
     *                      <tt>source_begin</tt>.
     * @param[in] target Iterator to the first element of the target array. The
     *                   target capacity should be at least as long as the source
     *                   range.
     *
     * Be careful if source and target range overlap, because in this case some
     * source elements could be accidently overwritten before they are moved.
     *
     * If source and target do not overlap, consider to use the function
     * arrayCopyForward instead that is faster in some cases.
     *
     * If there is no need for the source elements to persist, consider to use
     * arrayMoveBackward instead to improve performance.
     *
     * The semantic of this function's argument <tt>target</tt> differ from the
     * arguments of <tt>std::copy_backward</tt>.
     */