Functions

Mutating
[Algorithms]

Collaboration diagram for Mutating:

Functions


Function Documentation

template<typename _II , typename _OI >
_OI std::copy ( _II  __first,
_II  __last,
_OI  __result 
) [inline]

Copies the range [first,last) into result.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
Returns:
result + (first - last)

This inline function will boil down to a call to memmove whenever possible. Failing that, if random access iterators are passed, then the loop count will be known (and therefore a candidate for compiler optimizations such as unrolling). Result may not be contained within [first,last); the copy_backward function should be used instead.

Note that the end of the output range is permitted to be contained within [first,last).

Definition at line 464 of file stl_algobase.h.

template<typename _BI1 , typename _BI2 >
_BI2 std::copy_backward ( _BI1  __first,
_BI1  __last,
_BI2  __result 
) [inline]

Copies the range [first,last) into result.

Parameters:
first A bidirectional iterator.
last A bidirectional iterator.
result A bidirectional iterator.
Returns:
result - (first - last)

The function has the same effect as copy, but starts at the end of the range and works its way to the start, returning the start of the result. This inline function will boil down to a call to memmove whenever possible. Failing that, if random access iterators are passed, then the loop count will be known (and therefore a candidate for compiler optimizations such as unrolling).

Result may not be in the range [first,last). Use copy instead. Note that the start of the output range may overlap [first,last).

Definition at line 633 of file stl_algobase.h.

template<typename _InputIterator , typename _OutputIterator , typename _Predicate >
_OutputIterator std::copy_if ( _InputIterator  __first,
_InputIterator  __last,
_OutputIterator  __result,
_Predicate  __pred 
)

Copy the elements of a sequence for which a predicate is true.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
pred A predicate.
Returns:
An iterator designating the end of the resulting sequence.

Copies each element in the range [first,last) for which pred returns true to the range beginning at result.

copy_if() is stable, so the relative order of elements that are copied is unchanged.

Definition at line 949 of file stl_algo.h.

template<typename _InputIterator , typename _Size , typename _OutputIterator >
_OutputIterator std::copy_n ( _InputIterator  __first,
_Size  __n,
_OutputIterator  __result 
) [inline]

Copies the range [first,first+n) into [result,result+n).

Parameters:
first An input iterator.
n The number of elements to copy.
result An output iterator.
Returns:
result+n.

This inline function will boil down to a call to memmove whenever possible. Failing that, if random access iterators are passed, then the loop count will be known (and therefore a candidate for compiler optimizations such as unrolling).

Definition at line 1006 of file stl_algo.h.

References std::__iterator_category().

template<typename _ForwardIterator , typename _Tp >
void std::fill ( _ForwardIterator  __first,
_ForwardIterator  __last,
const _Tp &  __value 
) [inline]

Fills the range [first,last) with copies of value.

Parameters:
first A forward iterator.
last A forward iterator.
value A reference-to-const of arbitrary type.
Returns:
Nothing.

This function fills a range with copies of the same value. For char types filling contiguous areas of memory, this becomes an inline call to memset or wmemset.

Definition at line 735 of file stl_algobase.h.

template<typename _OI , typename _Size , typename _Tp >
_OI std::fill_n ( _OI  __first,
_Size  __n,
const _Tp &  __value 
) [inline]

Fills the range [first,first+n) with copies of value.

Parameters:
first An output iterator.
n The count of copies to perform.
value A reference-to-const of arbitrary type.
Returns:
The iterator at first+n.

This function fills a range with copies of the same value. For char types filling contiguous areas of memory, this becomes an inline call to memset or @ wmemset.

_GLIBCXX_RESOLVE_LIB_DEFECTS DR 865. More algorithms that throw away information

Definition at line 793 of file stl_algobase.h.

template<typename _ForwardIterator , typename _Generator >
void std::generate ( _ForwardIterator  __first,
_ForwardIterator  __last,
_Generator  __gen 
)

Assign the result of a function object to each value in a sequence.

Parameters:
first A forward iterator.
last A forward iterator.
gen A function object taking no arguments and returning std::iterator_traits<_ForwardIterator>::value_type
Returns:
generate() returns no value.

Performs the assignment *i = gen() for each i in the range [first,last).

Definition at line 4809 of file stl_algo.h.

template<typename _OutputIterator , typename _Size , typename _Generator >
_OutputIterator std::generate_n ( _OutputIterator  __first,
_Size  __n,
_Generator  __gen 
)

Assign the result of a function object to each value in a sequence.

Parameters:
first A forward iterator.
n The length of the sequence.
gen A function object taking no arguments and returning std::iterator_traits<_ForwardIterator>::value_type
Returns:
The end of the sequence, first+n

Performs the assignment *i = gen() for each i in the range [first,first+n).

_GLIBCXX_RESOLVE_LIB_DEFECTS DR 865. More algorithms that throw away information

Definition at line 4840 of file stl_algo.h.

template<typename _InputIterator , typename _Predicate >
bool std::is_partitioned ( _InputIterator  __first,
_InputIterator  __last,
_Predicate  __pred 
) [inline]

Checks whether the sequence is partitioned.

Parameters:
first An input iterator.
last An input iterator.
pred A predicate.
Returns:
True if the range [first,last) is partioned by pred, i.e. if all elements that satisfy pred appear before those that do not.

Definition at line 801 of file stl_algo.h.

References std::find_if_not(), and std::none_of().

template<typename _ForwardIterator1 , typename _ForwardIterator2 >
void std::iter_swap ( _ForwardIterator1  __a,
_ForwardIterator2  __b 
) [inline]

Swaps the contents of two iterators.

Parameters:
a An iterator.
b Another iterator.
Returns:
Nothing.

This function swaps the values pointed to by two iterators, not the iterators themselves.

Definition at line 117 of file stl_algobase.h.

Referenced by std::__merge_without_buffer(), std::__move_median_first(), std::__partition(), std::__reverse(), std::__rotate(), std::__unguarded_partition(), std::next_permutation(), std::prev_permutation(), std::random_shuffle(), std::shuffle(), and std::swap_ranges().

template<typename _II , typename _OI >
_OI std::move ( _II  __first,
_II  __last,
_OI  __result 
) [inline]

Moves the range [first,last) into result.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
Returns:
result + (first - last)

This inline function will boil down to a call to memmove whenever possible. Failing that, if random access iterators are passed, then the loop count will be known (and therefore a candidate for compiler optimizations such as unrolling). Result may not be contained within [first,last); the move_backward function should be used instead.

Note that the end of the output range is permitted to be contained within [first,last).

Definition at line 497 of file stl_algobase.h.

template<typename _Tp >
std::remove_reference<_Tp>::type&& std::move ( _Tp &&  __t  )  [inline]

Move a value.

Parameters:
__t A thing of arbitrary type.
Returns:
Same, moved.

Definition at line 81 of file move.h.

template<typename _BI1 , typename _BI2 >
_BI2 std::move_backward ( _BI1  __first,
_BI1  __last,
_BI2  __result 
) [inline]

Moves the range [first,last) into result.

Parameters:
first A bidirectional iterator.
last A bidirectional iterator.
result A bidirectional iterator.
Returns:
result - (first - last)

The function has the same effect as move, but starts at the end of the range and works its way to the start, returning the start of the result. This inline function will boil down to a call to memmove whenever possible. Failing that, if random access iterators are passed, then the loop count will be known (and therefore a candidate for compiler optimizations such as unrolling).

Result may not be in the range [first,last). Use move instead. Note that the start of the output range may overlap [first,last).

Definition at line 669 of file stl_algobase.h.

template<typename _ForwardIterator , typename _Predicate >
_ForwardIterator std::partition ( _ForwardIterator  __first,
_ForwardIterator  __last,
_Predicate  __pred 
) [inline]

Move elements for which a predicate is true to the beginning of a sequence.

Parameters:
first A forward iterator.
last A forward iterator.
pred A predicate functor.
Returns:
An iterator middle such that pred(i) is true for each iterator i in the range [first,middle) and false for each i in the range [middle,last).

pred must not modify its operand. partition() does not preserve the relative ordering of elements in each group, use stable_partition() if this is needed.

Definition at line 5011 of file stl_algo.h.

References std::__iterator_category(), and std::__partition().

template<typename _InputIterator , typename _OutputIterator1 , typename _OutputIterator2 , typename _Predicate >
pair<_OutputIterator1, _OutputIterator2> std::partition_copy ( _InputIterator  __first,
_InputIterator  __last,
_OutputIterator1  __out_true,
_OutputIterator2  __out_false,
_Predicate  __pred 
)

Copy the elements of a sequence to separate output sequences depending on the truth value of a predicate.

Parameters:
first An input iterator.
last An input iterator.
out_true An output iterator.
out_false An output iterator.
pred A predicate.
Returns:
A pair designating the ends of the resulting sequences.

Copies each element in the range [first,last) for which pred returns true to the range beginning at out_true and each element for which pred returns false to out_false.

Definition at line 1035 of file stl_algo.h.

template<typename _ForwardIterator , typename _Predicate >
_ForwardIterator std::partition_point ( _ForwardIterator  __first,
_ForwardIterator  __last,
_Predicate  __pred 
)

Find the partition point of a partitioned range.

Parameters:
first An iterator.
last Another iterator.
pred A predicate.
Returns:
An iterator mid such that all_of(first, mid, pred) and none_of(mid, last, pred) are both true.

Definition at line 819 of file stl_algo.h.

References std::advance(), and std::distance().

template<typename _RandomAccessIterator >
void std::random_shuffle ( _RandomAccessIterator  __first,
_RandomAccessIterator  __last 
) [inline]

Randomly shuffle the elements of a sequence.

Parameters:
first A forward iterator.
last A forward iterator.
Returns:
Nothing.

Reorder the elements in the range [first,last) using a random distribution, so that every possible ordering of the sequence is equally likely.

Definition at line 4947 of file stl_algo.h.

References std::iter_swap().

template<typename _RandomAccessIterator , typename _RandomNumberGenerator >
void std::random_shuffle ( _RandomAccessIterator  __first,
_RandomAccessIterator  __last,
_RandomNumberGenerator &&  __rand 
)

Shuffle the elements of a sequence using a random number generator.

Parameters:
first A forward iterator.
last A forward iterator.
rand The RNG functor or function.
Returns:
Nothing.

Reorders the elements in the range [first,last) using rand to provide a random distribution. Calling rand(N) for a positive integer N should return a randomly chosen integer from the range [0,N).

Definition at line 4975 of file stl_algo.h.

References std::iter_swap().

template<typename _ForwardIterator , typename _Tp >
_ForwardIterator std::remove ( _ForwardIterator  __first,
_ForwardIterator  __last,
const _Tp &  __value 
)

Remove elements from a sequence.

Parameters:
first An input iterator.
last An input iterator.
value The value to be removed.
Returns:
An iterator designating the end of the resulting sequence.

All elements equal to value are removed from the range [first,last).

remove() is stable, so the relative order of elements that are not removed is unchanged.

Elements between the end of the resulting sequence and last are still present, but their value is unspecified.

Definition at line 1084 of file stl_algo.h.

template<typename _InputIterator , typename _OutputIterator , typename _Tp >
_OutputIterator std::remove_copy ( _InputIterator  __first,
_InputIterator  __last,
_OutputIterator  __result,
const _Tp &  __value 
)

Copy a sequence, removing elements of a given value.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
value The value to be removed.
Returns:
An iterator designating the end of the resulting sequence.

Copies each element in the range [first,last) not equal to value to the range beginning at result. remove_copy() is stable, so the relative order of elements that are copied is unchanged.

Definition at line 872 of file stl_algo.h.

template<typename _InputIterator , typename _OutputIterator , typename _Predicate >
_OutputIterator std::remove_copy_if ( _InputIterator  __first,
_InputIterator  __last,
_OutputIterator  __result,
_Predicate  __pred 
)

Copy a sequence, removing elements for which a predicate is true.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
pred A predicate.
Returns:
An iterator designating the end of the resulting sequence.

Copies each element in the range [first,last) for which pred returns false to the range beginning at result.

remove_copy_if() is stable, so the relative order of elements that are copied is unchanged.

Definition at line 910 of file stl_algo.h.

template<typename _ForwardIterator , typename _Predicate >
_ForwardIterator std::remove_if ( _ForwardIterator  __first,
_ForwardIterator  __last,
_Predicate  __pred 
)

Remove elements from a sequence using a predicate.

Parameters:
first A forward iterator.
last A forward iterator.
pred A predicate.
Returns:
An iterator designating the end of the resulting sequence.

All elements for which pred returns true are removed from the range [first,last).

remove_if() is stable, so the relative order of elements that are not removed is unchanged.

Elements between the end of the resulting sequence and last are still present, but their value is unspecified.

Definition at line 1127 of file stl_algo.h.

template<typename _ForwardIterator , typename _Tp >
void std::replace ( _ForwardIterator  __first,
_ForwardIterator  __last,
const _Tp &  __old_value,
const _Tp &  __new_value 
)

Replace each occurrence of one value in a sequence with another value.

Parameters:
first A forward iterator.
last A forward iterator.
old_value The value to be replaced.
new_value The replacement value.
Returns:
replace() returns no value.

For each iterator i in the range [first,last) if *i == old_value then the assignment *i = new_value is performed.

Definition at line 4745 of file stl_algo.h.

template<typename _InputIterator , typename _OutputIterator , typename _Predicate , typename _Tp >
_OutputIterator std::replace_copy_if ( _InputIterator  __first,
_InputIterator  __last,
_OutputIterator  __result,
_Predicate  __pred,
const _Tp &  __new_value 
)

Copy a sequence, replacing each value for which a predicate returns true with another value.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
pred A predicate.
new_value The replacement value.
Returns:
The end of the output sequence, result+(last-first).

Copies each element in the range [first,last) to the range [result,result+(last-first)) replacing elements for which pred returns true with new_value.

Definition at line 3786 of file stl_algo.h.

template<typename _ForwardIterator , typename _Predicate , typename _Tp >
void std::replace_if ( _ForwardIterator  __first,
_ForwardIterator  __last,
_Predicate  __pred,
const _Tp &  __new_value 
)

Replace each value in a sequence for which a predicate returns true with another value.

Parameters:
first A forward iterator.
last A forward iterator.
pred A predicate.
new_value The replacement value.
Returns:
replace_if() returns no value.

For each iterator i in the range [first,last) if pred(*i) is true then the assignment *i = new_value is performed.

Definition at line 4777 of file stl_algo.h.

template<typename _BidirectionalIterator >
void std::reverse ( _BidirectionalIterator  __first,
_BidirectionalIterator  __last 
) [inline]

Reverse a sequence.

Parameters:
first A bidirectional iterator.
last A bidirectional iterator.
Returns:
reverse() returns no value.

Reverses the order of the elements in the range [first,last), so that the first element becomes the last etc. For every i such that 0<=i<=(last-first)/2), reverse() swaps *(first+i) and *(last-(i+1))

Definition at line 1435 of file stl_algo.h.

References std::__iterator_category(), and std::__reverse().

Referenced by std::next_permutation(), and std::prev_permutation().

template<typename _BidirectionalIterator , typename _OutputIterator >
_OutputIterator std::reverse_copy ( _BidirectionalIterator  __first,
_BidirectionalIterator  __last,
_OutputIterator  __result 
)

Copy a sequence, reversing its elements.

Parameters:
first A bidirectional iterator.
last A bidirectional iterator.
result An output iterator.
Returns:
An iterator designating the end of the resulting sequence.

Copies the elements in the range [first,last) to the range [result,result+(last-first)) such that the order of the elements is reversed. For every i such that 0<=i<=(last-first), reverse_copy() performs the assignment *(result+(last-first)-i) = *(first+i). The ranges [first,last) and [result,result+(last-first)) must not overlap.

Definition at line 1462 of file stl_algo.h.

template<typename _ForwardIterator >
void std::rotate ( _ForwardIterator  __first,
_ForwardIterator  __middle,
_ForwardIterator  __last 
) [inline]

Rotate the elements of a sequence.

Parameters:
first A forward iterator.
middle A forward iterator.
last A forward iterator.
Returns:
Nothing.

Rotates the elements of the range [first,last) by (middle-first) positions so that the element at middle is moved to first, the element at middle+1 is moved to +1 and so on for each element in the range [first,last).

This effectively swaps the ranges [first,middle) and [middle,last).

Performs *(first+(n+(last-middle))%(last-first))=*(first+n) for each n in the range [0,last-first).

Definition at line 1666 of file stl_algo.h.

References std::__rotate().

Referenced by std::__inplace_stable_partition(), std::__merge_without_buffer(), std::__rotate_adaptive(), and std::__stable_partition_adaptive().

template<typename _ForwardIterator , typename _OutputIterator >
_OutputIterator std::rotate_copy ( _ForwardIterator  __first,
_ForwardIterator  __middle,
_ForwardIterator  __last,
_OutputIterator  __result 
)

Copy a sequence, rotating its elements.

Parameters:
first A forward iterator.
middle A forward iterator.
last A forward iterator.
result An output iterator.
Returns:
An iterator designating the end of the resulting sequence.

Copies the elements of the range [first,last) to the range beginning at

Returns:
, rotating the copied elements by (middle-first) positions so that the element at middle is moved to result, the element at middle+1 is moved to
+1 and so on for each element in the range [first,last).

Performs *(result+(n+(last-middle))%(last-first))=*(first+n) for each n in the range [0,last-first).

Definition at line 1700 of file stl_algo.h.

template<typename _RandomAccessIterator , typename _UniformRandomNumberGenerator >
void std::shuffle ( _RandomAccessIterator  __first,
_RandomAccessIterator  __last,
_UniformRandomNumberGenerator &  __g 
)

Shuffle the elements of a sequence using a uniform random number generator.

Parameters:
first A forward iterator.
last A forward iterator.
g A UniformRandomNumberGenerator (26.5.1.3).
Returns:
Nothing.

Reorders the elements in the range [first,last) using g to provide random numbers.

Definition at line 4135 of file stl_algo.h.

References std::iter_swap().

template<typename _ForwardIterator , typename _Predicate >
_ForwardIterator std::stable_partition ( _ForwardIterator  __first,
_ForwardIterator  __last,
_Predicate  __pred 
)

Move elements for which a predicate is true to the beginning of a sequence, preserving relative ordering.

Parameters:
first A forward iterator.
last A forward iterator.
pred A predicate functor.
Returns:
An iterator middle such that pred(i) is true for each iterator i in the range [first,middle) and false for each i in the range [middle,last).

Performs the same function as partition() with the additional guarantee that the relative ordering of elements in each group is preserved, so any two elements x and y in the range [first,last) such that pred(x)==pred(y) will have the same relative ordering after calling stable_partition().

Definition at line 1858 of file stl_algo.h.

References std::__inplace_stable_partition(), std::__stable_partition_adaptive(), std::_Temporary_buffer< _ForwardIterator, _Tp >::begin(), std::_Temporary_buffer< _ForwardIterator, _Tp >::requested_size(), and std::_Temporary_buffer< _ForwardIterator, _Tp >::size().

template<typename _Tp >
void std::swap ( _Tp &  __a,
_Tp &  __b 
) [inline]

Swaps two values.

Parameters:
__a A thing of arbitrary type.
__b Another thing of arbitrary type.
Returns:
Nothing.

Definition at line 106 of file move.h.

template<typename _ForwardIterator1 , typename _ForwardIterator2 >
_ForwardIterator2 std::swap_ranges ( _ForwardIterator1  __first1,
_ForwardIterator1  __last1,
_ForwardIterator2  __first2 
)

Swap the elements of two sequences.

Parameters:
first1 A forward iterator.
last1 A forward iterator.
first2 A forward iterator.
Returns:
An iterator equal to first2+(last1-first1).

Swaps each element in the range [first1,last1) with the corresponding element in the range [first2,(last1-first1)). The ranges must not overlap.

Definition at line 158 of file stl_algobase.h.

References std::iter_swap().

Referenced by std::__rotate().

template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator , typename _BinaryOperation >
_OutputIterator std::transform ( _InputIterator1  __first1,
_InputIterator1  __last1,
_InputIterator2  __first2,
_OutputIterator  __result,
_BinaryOperation  __binary_op 
)

Perform an operation on corresponding elements of two sequences.

Parameters:
first1 An input iterator.
last1 An input iterator.
first2 An input iterator.
result An output iterator.
binary_op A binary operator.
Returns:
An output iterator equal to result+(last-first).

Applies the operator to the corresponding elements in the two input ranges and assigns the results to successive elements of the output sequence. Evaluates *(result+N)=binary_op(*(first1+N),*(first2+N)) for each N in the range [0,last1-first1).

binary_op must not alter either of its arguments.

Definition at line 4713 of file stl_algo.h.

template<typename _InputIterator , typename _OutputIterator , typename _UnaryOperation >
_OutputIterator std::transform ( _InputIterator  __first,
_InputIterator  __last,
_OutputIterator  __result,
_UnaryOperation  __unary_op 
)

Perform an operation on a sequence.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
unary_op A unary operator.
Returns:
An output iterator equal to result+(last-first).

Applies the operator to each element in the input range and assigns the results to successive elements of the output sequence. Evaluates *(result+N)=unary_op(*(first+N)) for each N in the range [0,last-first).

unary_op must not alter its argument.

Definition at line 4677 of file stl_algo.h.

template<typename _ForwardIterator , typename _BinaryPredicate >
_ForwardIterator std::unique ( _ForwardIterator  __first,
_ForwardIterator  __last,
_BinaryPredicate  __binary_pred 
)

Remove consecutive values from a sequence using a predicate.

Parameters:
first A forward iterator.
last A forward iterator.
binary_pred A binary predicate.
Returns:
An iterator designating the end of the resulting sequence.

Removes all but the first element from each group of consecutive values for which binary_pred returns true. unique() is stable, so the relative order of elements that are not removed is unchanged. Elements between the end of the resulting sequence and last are still present, but their value is unspecified.

Definition at line 1207 of file stl_algo.h.

template<typename _ForwardIterator >
_ForwardIterator std::unique ( _ForwardIterator  __first,
_ForwardIterator  __last 
)

Remove consecutive duplicate values from a sequence.

Parameters:
first A forward iterator.
last A forward iterator.
Returns:
An iterator designating the end of the resulting sequence.

Removes all but the first element from each group of consecutive values that compare equal. unique() is stable, so the relative order of elements that are not removed is unchanged. Elements between the end of the resulting sequence and last are still present, but their value is unspecified.

Definition at line 1167 of file stl_algo.h.

template<typename _InputIterator , typename _OutputIterator >
_OutputIterator std::unique_copy ( _InputIterator  __first,
_InputIterator  __last,
_OutputIterator  __result 
) [inline]

Copy a sequence, removing consecutive duplicate values.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
Returns:
An iterator designating the end of the resulting sequence.

Copies each element in the range [first,last) to the range beginning at result, except that only the first element is copied from groups of consecutive elements that compare equal. unique_copy() is stable, so the relative order of elements that are copied is unchanged.

_GLIBCXX_RESOLVE_LIB_DEFECTS DR 241. Does unique_copy() require CopyConstructible and Assignable?

_GLIBCXX_RESOLVE_LIB_DEFECTS DR 538. 241 again: Does unique_copy() require CopyConstructible and Assignable?

Definition at line 4876 of file stl_algo.h.

References std::__iterator_category(), and std::__unique_copy().

template<typename _InputIterator , typename _OutputIterator , typename _BinaryPredicate >
_OutputIterator std::unique_copy ( _InputIterator  __first,
_InputIterator  __last,
_OutputIterator  __result,
_BinaryPredicate  __binary_pred 
) [inline]

Copy a sequence, removing consecutive values using a predicate.

Parameters:
first An input iterator.
last An input iterator.
result An output iterator.
binary_pred A binary predicate.
Returns:
An iterator designating the end of the resulting sequence.

Copies each element in the range [first,last) to the range beginning at result, except that only the first element is copied from groups of consecutive elements for which binary_pred returns true. unique_copy() is stable, so the relative order of elements that are copied is unchanged.

_GLIBCXX_RESOLVE_LIB_DEFECTS DR 241. Does unique_copy() require CopyConstructible and Assignable?

Definition at line 4916 of file stl_algo.h.

References std::__iterator_category(), and std::__unique_copy().