std.algorithm.mutation.remove  - multiple declarations
				Function remove
Eliminates elements at given offsets from range and returns the shortened
range.
						
				Range remove(SwapStrategy s = SwapStrategy
				  Range range,
				
				  Offset offset
				
				)
				
				if (Offset
				
				Range remove(SwapStrategy s = SwapStrategy
				  Range range,
				
				  Offset offset
				
				)
				
				if (Offset
				For example, here is how to remove a single element from an array:
import stdimport std.algorithm.mutation; int[] a = [ 3
The element at offset 1 has been removed and the rest of the elements have
shifted up to fill its place, however, the original array remains of the same
length. This is because all functions in std only change content, not topology. The value 8 is repeated because move was
invoked to rearrange elements, and on integers move simply copies the source
to the destination.  To replace a with the effect of the removal, simply
assign the slice returned by remove to it, as shown in the first example.
Removing multiple elements
Multiple indices can be passed into remove. In that case,
elements at the respective indices are all removed. The indices must
be passed in increasing order, otherwise an exception occurs.
import stdimport std.algorithm.mutation
The tuple passes in a range closed to the left and open to
the right (consistent with built-in slices), e.g. tuple(1, 3)
means indices 1 and 2 but not 3.
Finally, any combination of integral offsets and tuples composed of two integral offsets can be passed in:
import stdimport std.algorithm.mutation; int[] a = [ 0
In the case above, the element at slot 1 is removed, but replaced
with the last element of the range. Taking advantage of the relaxation
of the stability requirement, remove moved elements from the end
of the array over the slots to be removed. This way there is less data
movement to be done which improves the execution time of the function.
remove works on bidirectional ranges that have assignable
lvalue elements. The moving strategy is (listed from fastest to slowest):
- If s == SwapStrategy, then elements are moved from the end of the range into the slots to be filled. In this case, the absolute minimum of moves is performed..unstable && isRandomAccessRange!Range && hasLength!Range && hasLvalueElements!Range 
- Otherwise, if s == SwapStrategy, then elements are still moved from the end of the range, but time is spent on advancing between slots by repeated calls to.unstable && isBidirectionalRange!Range && hasLength!Range && hasLvalueElements!Range range..popFront 
- Otherwise, elements are moved
incrementally towards the front of range; a given element is never moved several times, but more elements are moved than in the previous cases.
Parameters
| Name | Description | 
|---|---|
| s | a SwapStrategy to determine if the original order needs to be preserved | 
| range | a bidirectional range with a length member | 
| offset | which element(s) to remove | 
Returns
A range containing elements of range with 1 or more elements removed.
Example
import stdExample
import stdExample
SwapStrategy is faster, but doesn't guarantee the same order of the original array
writeln([5, 6, 7, 8]Function remove
Reduces the length of the
bidirectional range range by removing
elements that satisfy pred. If s = SwapStrategy,
elements are moved from the right end of the range over the elements
to eliminate. If s = SwapStrategy (the default),
elements are moved progressively to front such that their relative
order is preserved. Returns the filtered range.
						
					
				Parameters
| Name | Description | 
|---|---|
| range | a bidirectional ranges with lvalue elements or mutable character arrays | 
Returns
the range with all of the elements where pred is true
    removed
Example
static immutable base = [1, 2, 3, 2, 4, 2, 5, 2];
int[] arr = base[]