Destructively move elements while move‐inserting a source range.
Synopsis
Declared in <bslalg_arrayprimitives.h>
template<class TARGET_TYPE>
static
void
destructiveMoveAndMoveInsert(
TARGET_TYPE* toBegin,
TARGET_TYPE** fromEndPtr,
TARGET_TYPE** lastPtr,
TARGET_TYPE* fromBegin,
TARGET_TYPE* position,
TARGET_TYPE* fromEnd,
TARGET_TYPE* first,
TARGET_TYPE* last,
size_type numElements,
bslma::Allocator* allocator);
Description
Move the elements of (template parameter) TARGET_TYPE in the array starting at the specified fromBegin address and ending immediately before the specified fromEnd address into an uninitialized array of TARGET_TYPE at the specified toBegin address, moving into the specified position (after translating from fromBegin to toBegin) the specified numElements of the TARGET_TYPE from the array starting at the specified first address and ending immediately before the specified last address. Keep the pointer at the specified fromEndPtr address pointing to the first uninitialized element in [fromBegin, fromEnd)], and the pointer at the specified lastPtr address pointing to the end of the moved range as the elements from the range [ first, last)] are moved from source to destination. The behavior is undefined unless fromBegin <= position <= fromEnd, the destination array contains at least (fromEnd ‐ fromBegin) + numElements uninitialized elements after toBegin, and numElements is the distance from first to last. If a copy constructor or assignment operator for TARGET_TYPE throws an exception, then any elements in [ *lastPtr, last )] as well as in [ toBegin, ... )] are destroyed, and the elements in the ranges [ first, *lastPtr )] and [ fromBegin, *fromEndPtr )] will have unspecified but valid values.
Parameters
Name |
Description |
toBegin |
beginning of the uninitialized destination range |
fromEndPtr |
loads the end of the remaining valid source range |
lastPtr |
loads the end of the remaining valid insert range |
fromBegin |
beginning of the source range |
position |
insertion position within the source range |
fromEnd |
end of the source range (one past the last element) |
first |
beginning of the range of elements to move‐insert |
last |
end of the range of elements to move‐insert |
numElements |
number of elements to move‐insert from |
allocator |
allocator used to supply memory if required |
Created with MrDocs