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

Defined in | <seqan/basic.h>
Signature | `void arrayMoveBackward(sourceBegin, sourceEnd, target);`

## Parameters

`sourceEnd` | Iterator behind the last element of the source array. `sourceEnd` must have the same type as `sourceBegin`.
`sourceBegin` | Iterator to the first element of the source array.
`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

The function possibly clears (but does not destroy) the source elements. If source elements must persist, consider to use arrayCopyBackward instead.

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 arrayMoveForward instead that is faster in some cases.

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 arrayMoveBackward
     *
     * @headerfile <seqan/basic.h>
     *
     * @brief Moves a range of objects into another range of objects starting from
     *        the last element.
     *
     * @signature void arrayMoveBackward(sourceBegin, sourceEnd, target);
     *
     * @param[in] sourceEnd Iterator behind the last element of the source array.
     *                      <tt>sourceEnd</tt> must have the same type as
     *                      <tt>sourceBegin</tt>.
     * @param[in] sourceBegin Iterator to the first element of the source array.
     * @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.
     *
     * The function possibly clears (but does not destroy) the source elements. If
     * source elements must persist, consider to use arrayCopyBackward instead.
     *
     * 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
     * arrayMoveForward instead that is faster in some cases.
     *
     * The semantic of this function's argument <tt>target</tt> differ from the
     * arguments of <tt>std::copy_backward</tt>.
     */