function template
<algorithm>
std::move
template <class InputIterator, class OutputIterator> OutputIterator move (InputIterator first, InputIterator last, OutputIterator result);
Move range of elements
[first,last) into the range beginning at result.
The value of the elements in the [first,last) is transferred to the elements pointed by result. After the call, the elements in the range [first,last) are left in an unspecified but valid state.
The ranges shall not overlap in such a way that result points to an element in the range [first,last). For such cases, see move_backward.
The behavior of this function template is equivalent to:
|
|
Parameters
- first, last
- Input iterators to the initial and final positions in a sequence to be moved. The range used is
[first,last), which contains all the elements between first and last, including the element pointed by first but not the element pointed by last. - result
- Output iterator to the initial position in the destination sequence.
This shall not point to any element in the range[first,last).
Return value
An iterator to the end of the destination range where elements have been moved.Example
|
|
Possible output:
Moving ranges... foo contains 4 elements: (each in an unspecified but valid state) bar contains 4 elements: [air] [water] [fire] [earth] Moving container... foo contains 4 elements: [air] [water] [fire] [earth] bar is in an unspecified but valid state
Complexity
Linear in the distance between first and last: Performs a move-assignment for each element in the range.Data races
The objects in both ranges are modified.Exceptions
Throws if either an element move-assignment or an operation on iterators throws.Note that invalid arguments cause undefined behavior.
See also
- move_backward
- Move range of elements backward (function template)
- copy
- Copy range of elements (function template)