libstdc++
|
Functions | |
template<typename _II , typename _OI > | |
_OI | std::copy (_II __first, _II __last, _OI __result) |
template<typename _BI1 , typename _BI2 > | |
_BI2 | std::copy_backward (_BI1 __first, _BI1 __last, _BI2 __result) |
template<typename _InputIterator , typename _OutputIterator , typename _Predicate > | |
_OutputIterator | std::copy_if (_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) |
template<typename _InputIterator , typename _Size , typename _OutputIterator > | |
_OutputIterator | std::copy_n (_InputIterator __first, _Size __n, _OutputIterator __result) |
template<typename _ForwardIterator , typename _Tp > | |
void | std::fill (_ForwardIterator __first, _ForwardIterator __last, const _Tp &__value) |
template<typename _OI , typename _Size , typename _Tp > | |
_OI | std::fill_n (_OI __first, _Size __n, const _Tp &__value) |
template<typename _ForwardIterator , typename _Generator > | |
void | std::generate (_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) |
template<typename _OutputIterator , typename _Size , typename _Generator > | |
_OutputIterator | std::generate_n (_OutputIterator __first, _Size __n, _Generator __gen) |
template<typename _InputIterator , typename _Predicate > | |
bool | std::is_partitioned (_InputIterator __first, _InputIterator __last, _Predicate __pred) |
template<typename _ForwardIterator1 , typename _ForwardIterator2 > | |
void | std::iter_swap (_ForwardIterator1 __a, _ForwardIterator2 __b) |
template<typename _II , typename _OI > | |
_OI | std::move (_II __first, _II __last, _OI __result) |
template<typename _BI1 , typename _BI2 > | |
_BI2 | std::move_backward (_BI1 __first, _BI1 __last, _BI2 __result) |
template<typename _ForwardIterator , typename _Predicate > | |
_ForwardIterator | std::partition (_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) |
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) |
template<typename _ForwardIterator , typename _Predicate > | |
_ForwardIterator | std::partition_point (_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) |
template<typename _RandomAccessIterator , typename _RandomNumberGenerator > | |
void | std::random_shuffle (_RandomAccessIterator __first, _RandomAccessIterator __last, _RandomNumberGenerator &&__rand) |
template<typename _ForwardIterator , typename _Tp > | |
_ForwardIterator | std::remove (_ForwardIterator __first, _ForwardIterator __last, const _Tp &__value) |
template<typename _InputIterator , typename _OutputIterator , typename _Tp > | |
_OutputIterator | std::remove_copy (_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp &__value) |
template<typename _InputIterator , typename _OutputIterator , typename _Predicate > | |
_OutputIterator | std::remove_copy_if (_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) |
template<typename _ForwardIterator , typename _Predicate > | |
_ForwardIterator | std::remove_if (_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) |
template<typename _ForwardIterator , typename _Tp > | |
void | std::replace (_ForwardIterator __first, _ForwardIterator __last, const _Tp &__old_value, const _Tp &__new_value) |
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) |
template<typename _ForwardIterator , typename _Predicate , typename _Tp > | |
void | std::replace_if (_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, const _Tp &__new_value) |
template<typename _BidirectionalIterator > | |
void | std::reverse (_BidirectionalIterator __first, _BidirectionalIterator __last) |
template<typename _BidirectionalIterator , typename _OutputIterator > | |
_OutputIterator | std::reverse_copy (_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) |
template<typename _ForwardIterator > | |
_ForwardIterator | std::_V2::rotate (_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) |
template<typename _ForwardIterator , typename _OutputIterator > | |
_OutputIterator | std::rotate_copy (_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, _OutputIterator __result) |
template<typename _RandomAccessIterator , typename _UniformRandomNumberGenerator > | |
void | std::shuffle (_RandomAccessIterator __first, _RandomAccessIterator __last, _UniformRandomNumberGenerator &&__g) |
template<typename _ForwardIterator , typename _Predicate > | |
_ForwardIterator | std::stable_partition (_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) |
template<typename _ForwardIterator1 , typename _ForwardIterator2 > | |
_ForwardIterator2 | std::swap_ranges (_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) |
template<typename _InputIterator , typename _OutputIterator , typename _UnaryOperation > | |
_OutputIterator | std::transform (_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __unary_op) |
template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator , typename _BinaryOperation > | |
_OutputIterator | std::transform (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _OutputIterator __result, _BinaryOperation __binary_op) |
template<typename _ForwardIterator > | |
_ForwardIterator | std::unique (_ForwardIterator __first, _ForwardIterator __last) |
template<typename _ForwardIterator , typename _BinaryPredicate > | |
_ForwardIterator | std::unique (_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __binary_pred) |
template<typename _InputIterator , typename _OutputIterator > | |
_OutputIterator | std::unique_copy (_InputIterator __first, _InputIterator __last, _OutputIterator __result) |
template<typename _InputIterator , typename _OutputIterator , typename _BinaryPredicate > | |
_OutputIterator | std::unique_copy (_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryPredicate __binary_pred) |
|
inline |
Copies the range [first,last) into result.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
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 446 of file stl_algobase.h.
|
inline |
Copies the range [first,last) into result.
__first | A bidirectional iterator. |
__last | A bidirectional iterator. |
__result | A bidirectional iterator. |
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 622 of file stl_algobase.h.
_OutputIterator std::copy_if | ( | _InputIterator | __first, |
_InputIterator | __last, | ||
_OutputIterator | __result, | ||
_Predicate | __pred | ||
) |
Copy the elements of a sequence for which a predicate is true.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
__pred | A predicate. |
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 737 of file stl_algo.h.
|
inline |
Copies the range [first,first+n) into [result,result+n).
__first | An input iterator. |
__n | The number of elements to copy. |
__result | An output iterator. |
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 799 of file stl_algo.h.
|
inline |
Fills the range [first,last) with copies of value.
__first | A forward iterator. |
__last | A forward iterator. |
__value | A reference-to-const of arbitrary type. |
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 724 of file stl_algobase.h.
|
inline |
Fills the range [first,first+n) with copies of value.
__first | An output iterator. |
__n | The count of copies to perform. |
__value | A reference-to-const of arbitrary type. |
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 784 of file stl_algobase.h.
void std::generate | ( | _ForwardIterator | __first, |
_ForwardIterator | __last, | ||
_Generator | __gen | ||
) |
Assign the result of a function object to each value in a sequence.
__first | A forward iterator. |
__last | A forward iterator. |
__gen | A function object taking no arguments and returning std::iterator_traits<_ForwardIterator>::value_type |
Performs the assignment *i
= __gen()
for each i
in the range [__first,__last).
Definition at line 4426 of file stl_algo.h.
_OutputIterator std::generate_n | ( | _OutputIterator | __first, |
_Size | __n, | ||
_Generator | __gen | ||
) |
Assign the result of a function object to each value in a sequence.
__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 |
__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 4457 of file stl_algo.h.
|
inline |
Checks whether the sequence is partitioned.
__first | An input iterator. |
__last | An input iterator. |
__pred | A predicate. |
[__first,__last) is partioned by __pred
, i.e. if all elements that satisfy __pred
appear before those that do not. Definition at line 582 of file stl_algo.h.
References std::find_if_not(), and std::none_of().
|
inline |
Swaps the contents of two iterators.
__a | An iterator. |
__b | Another iterator. |
This function swaps the values pointed to by two iterators, not the iterators themselves.
Definition at line 120 of file stl_algobase.h.
Referenced by std::__merge_without_buffer(), std::__move_median_to_first(), std::__partition(), std::__reverse(), std::_V2::__rotate(), and std::__unguarded_partition().
|
inline |
Moves the range [first,last) into result.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
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 479 of file stl_algobase.h.
|
inline |
Moves the range [first,last) into result.
__first | A bidirectional iterator. |
__last | A bidirectional iterator. |
__result | A bidirectional iterator. |
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 658 of file stl_algobase.h.
|
inline |
Move elements for which a predicate is true to the beginning of a sequence.
__first | A forward iterator. |
__last | A forward iterator. |
__pred | A predicate functor. |
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 4641 of file stl_algo.h.
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.
__first | An input iterator. |
__last | An input iterator. |
__out_true | An output iterator. |
__out_false | An output iterator. |
__pred | A predicate. |
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 828 of file stl_algo.h.
_ForwardIterator std::partition_point | ( | _ForwardIterator | __first, |
_ForwardIterator | __last, | ||
_Predicate | __pred | ||
) |
Find the partition point of a partitioned range.
__first | An iterator. |
__last | Another iterator. |
__pred | A predicate. |
mid
such that all_of(__first, mid, __pred)
and none_of(mid, __last, __pred)
are both true. Definition at line 603 of file stl_algo.h.
void std::random_shuffle | ( | _RandomAccessIterator | __first, |
_RandomAccessIterator | __last, | ||
_RandomNumberGenerator && | __rand | ||
) |
Shuffle the elements of a sequence using a random number generator.
__first | A forward iterator. |
__last | A forward iterator. |
__rand | The RNG functor or function. |
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 4601 of file stl_algo.h.
|
inline |
Remove elements from a sequence.
__first | An input iterator. |
__last | An input iterator. |
__value | The value to be removed. |
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 896 of file stl_algo.h.
|
inline |
Copy a sequence, removing elements of a given value.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
__value | The value to be removed. |
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 670 of file stl_algo.h.
|
inline |
Copy a sequence, removing elements for which a predicate is true.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
__pred | A predicate. |
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 703 of file stl_algo.h.
|
inline |
Remove elements from a sequence using a predicate.
__first | A forward iterator. |
__last | A forward iterator. |
__pred | A predicate. |
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 929 of file stl_algo.h.
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.
__first | A forward iterator. |
__last | A forward iterator. |
__old_value | The value to be replaced. |
__new_value | The replacement 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 4362 of file stl_algo.h.
|
inline |
Copy a sequence, replacing each value for which a predicate returns true with another value.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
__pred | A predicate. |
__new_value | The replacement value. |
__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 3171 of file stl_algo.h.
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.
__first | A forward iterator. |
__last | A forward iterator. |
__pred | A predicate. |
__new_value | The replacement 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 4394 of file stl_algo.h.
|
inline |
Reverse a sequence.
__first | A bidirectional iterator. |
__last | A bidirectional iterator. |
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 1180 of file stl_algo.h.
_OutputIterator std::reverse_copy | ( | _BidirectionalIterator | __first, |
_BidirectionalIterator | __last, | ||
_OutputIterator | __result | ||
) |
Copy a sequence, reversing its elements.
__first | A bidirectional iterator. |
__last | A bidirectional iterator. |
__result | An output iterator. |
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)-1-i) = *(__first+i). The ranges [__first,__last) and
[__result,__result+(__last-__first)) must not overlap.
Definition at line 1207 of file stl_algo.h.
|
inline |
Rotate the elements of a sequence.
__first | A forward iterator. |
__middle | A forward iterator. |
__last | A forward iterator. |
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 __first+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 1434 of file stl_algo.h.
|
inline |
Copy a sequence, rotating its elements.
__first | A forward iterator. |
__middle | A forward iterator. |
__last | A forward iterator. |
__result | An output iterator. |
Copies the elements of the range [__first,__last) to the range beginning at
(__middle-__first) positions so that the element at __middle
is moved to __result
, the element at __middle+1
is moved to __result+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 1471 of file stl_algo.h.
void std::shuffle | ( | _RandomAccessIterator | __first, |
_RandomAccessIterator | __last, | ||
_UniformRandomNumberGenerator && | __g | ||
) |
Shuffle the elements of a sequence using a uniform random number generator.
__first | A forward iterator. |
__last | A forward iterator. |
__g | A UniformRandomNumberGenerator (26.5.1.3). |
Reorders the elements in the range [__first,__last) using
__g
to provide random numbers.
Definition at line 3792 of file stl_algo.h.
|
inline |
Move elements for which a predicate is true to the beginning of a sequence, preserving relative ordering.
__first | A forward iterator. |
__last | A forward iterator. |
__pred | A predicate functor. |
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 1651 of file stl_algo.h.
_ForwardIterator2 std::swap_ranges | ( | _ForwardIterator1 | __first1, |
_ForwardIterator1 | __last1, | ||
_ForwardIterator2 | __first2 | ||
) |
Swap the elements of two sequences.
__first1 | A forward iterator. |
__last1 | A forward iterator. |
__first2 | A forward iterator. |
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 166 of file stl_algobase.h.
_OutputIterator std::transform | ( | _InputIterator | __first, |
_InputIterator | __last, | ||
_OutputIterator | __result, | ||
_UnaryOperation | __unary_op | ||
) |
Perform an operation on a sequence.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
__unary_op | A unary operator. |
__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 4293 of file stl_algo.h.
_OutputIterator std::transform | ( | _InputIterator1 | __first1, |
_InputIterator1 | __last1, | ||
_InputIterator2 | __first2, | ||
_OutputIterator | __result, | ||
_BinaryOperation | __binary_op | ||
) |
Perform an operation on corresponding elements of two sequences.
__first1 | An input iterator. |
__last1 | An input iterator. |
__first2 | An input iterator. |
__result | An output iterator. |
__binary_op | A binary operator. |
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 4330 of file stl_algo.h.
|
inline |
Remove consecutive duplicate values from a sequence.
__first | A forward iterator. |
__last | A forward iterator. |
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 995 of file stl_algo.h.
|
inline |
Remove consecutive values from a sequence using a predicate.
__first | A forward iterator. |
__last | A forward iterator. |
__binary_pred | A binary predicate. |
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 1025 of file stl_algo.h.
|
inline |
Copy a sequence, removing consecutive duplicate values.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
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 4493 of file stl_algo.h.
|
inline |
Copy a sequence, removing consecutive values using a predicate.
__first | An input iterator. |
__last | An input iterator. |
__result | An output iterator. |
__binary_pred | A binary predicate. |
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 4534 of file stl_algo.h.