⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stl_algo.h

📁 openRisc2000编译链接器等,用于i386 cygwin
💻 H
📖 第 1 页 / 共 5 页
字号:
            __typeof__(__unary_op(*__first))>)      __glibcxx_requires_valid_range(__first, __last);      for ( ; __first != __last; ++__first, ++__result)	*__result = __unary_op(*__first);      return __result;    }  /**   *  @brief Perform an operation on corresponding elements of two sequences.   *  @param  first1     An input iterator.   *  @param  last1      An input iterator.   *  @param  first2     An input iterator.   *  @param  result     An output iterator.   *  @param  binary_op  A binary operator.   *  @return   An output iterator equal to @p 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 @p *(result+N)=binary_op(*(first1+N),*(first2+N)) for each   *  @c N in the range @p [0,last1-first1).   *   *  @p binary_op must not alter either of its arguments.  */  template<typename _InputIterator1, typename _InputIterator2,	   typename _OutputIterator, typename _BinaryOperation>    _OutputIterator    transform(_InputIterator1 __first1, _InputIterator1 __last1,	      _InputIterator2 __first2, _OutputIterator __result,	      _BinaryOperation __binary_op)    {      // concept requirements      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,            // "the type returned by a _BinaryOperation"            __typeof__(__binary_op(*__first1,*__first2))>)      __glibcxx_requires_valid_range(__first1, __last1);      for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result)	*__result = __binary_op(*__first1, *__first2);      return __result;    }  /**   *  @brief Replace each occurrence of one value in a sequence with another   *         value.   *  @param  first      A forward iterator.   *  @param  last       A forward iterator.   *  @param  old_value  The value to be replaced.   *  @param  new_value  The replacement value.   *  @return   replace() returns no value.   *   *  For each iterator @c i in the range @p [first,last) if @c *i ==   *  @p old_value then the assignment @c *i = @p new_value is performed.  */  template<typename _ForwardIterator, typename _Tp>    void    replace(_ForwardIterator __first, _ForwardIterator __last,	    const _Tp& __old_value, const _Tp& __new_value)    {      // concept requirements      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<				  _ForwardIterator>)      __glibcxx_function_requires(_EqualOpConcept<	    typename iterator_traits<_ForwardIterator>::value_type, _Tp>)      __glibcxx_function_requires(_ConvertibleConcept<_Tp,	    typename iterator_traits<_ForwardIterator>::value_type>)      __glibcxx_requires_valid_range(__first, __last);      for ( ; __first != __last; ++__first)	if (*__first == __old_value)	  *__first = __new_value;    }  /**   *  @brief Replace each value in a sequence for which a predicate returns   *         true with another value.   *  @param  first      A forward iterator.   *  @param  last       A forward iterator.   *  @param  pred       A predicate.   *  @param  new_value  The replacement value.   *  @return   replace_if() returns no value.   *   *  For each iterator @c i in the range @p [first,last) if @p pred(*i)   *  is true then the assignment @c *i = @p new_value is performed.  */  template<typename _ForwardIterator, typename _Predicate, typename _Tp>    void    replace_if(_ForwardIterator __first, _ForwardIterator __last,	       _Predicate __pred, const _Tp& __new_value)    {      // concept requirements      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<				  _ForwardIterator>)      __glibcxx_function_requires(_ConvertibleConcept<_Tp,	    typename iterator_traits<_ForwardIterator>::value_type>)      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,	    typename iterator_traits<_ForwardIterator>::value_type>)      __glibcxx_requires_valid_range(__first, __last);      for ( ; __first != __last; ++__first)	if (__pred(*__first))	  *__first = __new_value;    }  /**   *  @brief Copy a sequence, replacing each element of one value with another   *         value.   *  @param  first      An input iterator.   *  @param  last       An input iterator.   *  @param  result     An output iterator.   *  @param  old_value  The value to be replaced.   *  @param  new_value  The replacement value.   *  @return   The end of the output sequence, @p result+(last-first).   *   *  Copies each element in the input range @p [first,last) to the   *  output range @p [result,result+(last-first)) replacing elements   *  equal to @p old_value with @p new_value.  */  template<typename _InputIterator, typename _OutputIterator, typename _Tp>    _OutputIterator    replace_copy(_InputIterator __first, _InputIterator __last,		 _OutputIterator __result,		 const _Tp& __old_value, const _Tp& __new_value)    {      // concept requirements      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,	    typename iterator_traits<_InputIterator>::value_type>)      __glibcxx_function_requires(_EqualOpConcept<	    typename iterator_traits<_InputIterator>::value_type, _Tp>)      __glibcxx_requires_valid_range(__first, __last);      for ( ; __first != __last; ++__first, ++__result)	*__result = *__first == __old_value ? __new_value : *__first;      return __result;    }  /**   *  @brief Copy a sequence, replacing each value for which a predicate   *         returns true with another value.   *  @param  first      An input iterator.   *  @param  last       An input iterator.   *  @param  result     An output iterator.   *  @param  pred       A predicate.   *  @param  new_value  The replacement value.   *  @return   The end of the output sequence, @p result+(last-first).   *   *  Copies each element in the range @p [first,last) to the range   *  @p [result,result+(last-first)) replacing elements for which   *  @p pred returns true with @p new_value.  */  template<typename _InputIterator, typename _OutputIterator,	   typename _Predicate, typename _Tp>    _OutputIterator    replace_copy_if(_InputIterator __first, _InputIterator __last,		    _OutputIterator __result,		    _Predicate __pred, const _Tp& __new_value)    {      // concept requirements      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,	    typename iterator_traits<_InputIterator>::value_type>)      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,	    typename iterator_traits<_InputIterator>::value_type>)      __glibcxx_requires_valid_range(__first, __last);      for ( ; __first != __last; ++__first, ++__result)	*__result = __pred(*__first) ? __new_value : *__first;      return __result;    }  /**   *  @brief Assign the result of a function object to each value in a   *         sequence.   *  @param  first  A forward iterator.   *  @param  last   A forward iterator.   *  @param  gen    A function object taking no arguments.   *  @return   generate() returns no value.   *   *  Performs the assignment @c *i = @p gen() for each @c i in the range   *  @p [first,last).  */  template<typename _ForwardIterator, typename _Generator>    void    generate(_ForwardIterator __first, _ForwardIterator __last,	     _Generator __gen)    {      // concept requirements      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)      __glibcxx_function_requires(_GeneratorConcept<_Generator,	    typename iterator_traits<_ForwardIterator>::value_type>)      __glibcxx_requires_valid_range(__first, __last);      for ( ; __first != __last; ++__first)	*__first = __gen();    }  /**   *  @brief Assign the result of a function object to each value in a   *         sequence.   *  @param  first  A forward iterator.   *  @param  n      The length of the sequence.   *  @param  gen    A function object taking no arguments.   *  @return   The end of the sequence, @p first+n   *   *  Performs the assignment @c *i = @p gen() for each @c i in the range   *  @p [first,first+n).  */  template<typename _OutputIterator, typename _Size, typename _Generator>    _OutputIterator    generate_n(_OutputIterator __first, _Size __n, _Generator __gen)    {      // concept requirements      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,            // "the type returned by a _Generator"            __typeof__(__gen())>)      for ( ; __n > 0; --__n, ++__first)	*__first = __gen();      return __first;    }  /**   *  @brief Copy a sequence, removing elements of a given value.   *  @param  first   An input iterator.   *  @param  last    An input iterator.   *  @param  result  An output iterator.   *  @param  value   The value to be removed.   *  @return   An iterator designating the end of the resulting sequence.   *   *  Copies each element in the range @p [first,last) not equal to @p value   *  to the range beginning at @p result.   *  remove_copy() is stable, so the relative order of elements that are   *  copied is unchanged.  */  template<typename _InputIterator, typename _OutputIterator, typename _Tp>    _OutputIterator    remove_copy(_InputIterator __first, _InputIterator __last,		_OutputIterator __result, const _Tp& __value)    {      // concept requirements      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,	    typename iterator_traits<_InputIterator>::value_type>)      __glibcxx_function_requires(_EqualOpConcept<	    typename iterator_traits<_InputIterator>::value_type, _Tp>)      __glibcxx_requires_valid_range(__first, __last);      for ( ; __first != __last; ++__first)	if (!(*__first == __value))	  {	    *__result = *__first;	    ++__result;	  }      return __result;    }  /**   *  @brief Copy a sequence, removing elements for which a predicate is true.   *  @param  first   An input iterator.   *  @param  last    An input iterator.   *  @param  result  An output iterator.   *  @param  pred    A predicate.   *  @return   An iterator designating the end of the resulting sequence.   *   *  Copies each element in the range @p [first,last) for which   *  @p pred returns true to the range beginning at @p result.   *   *  remove_copy_if() is stable, so the relative order of elements that are   *  copied is unchanged.  */  template<typename _InputIterator, typename _OutputIterator,	   typename _Predicate>    _OutputIterator    remove_copy_if(_InputIterator __first, _InputIterator __last,		   _OutputIterator __result, _Predicate __pred)    {      // concept requirements      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,	    typename iterator_traits<_InputIterator>::value_type>)      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,	    typename iterator_traits<_InputIterator>::value_type>)      __glibcxx_requires_valid_range(__first, __last);      for ( ; __first != __last; ++__first)	if (!__pred(*__first))	  {	    *__result = *__first;	    ++__result;	  }      return __result;    }  /**   *  @brief Remove elements from a sequence.   *  @param  first  An input iterator.   *  @param  last   An input iterator.   *  @param  value  The value to be removed.   *  @return   An iterator designating the end of the resulting sequence.   *   *  All elements equal to @p value are removed from the range   *  @p [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 @p last   *  are still present, but their value is unspecified.  */  template<typename _ForwardIterator, typename _Tp>    _ForwardIterator    remove(_ForwardIterator __first, _ForwardIterator __last,	   const _Tp& __value)    {      // concept requirements      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<				  _ForwardIterator>)      __glibcxx_function_requires(_EqualOpConcept<	    typename iterator_traits<_ForwardIterator>::value_type, _Tp>)      __glibcxx_requires_valid_range(__first, __last);      __first = std::find(__first, __last, __value);      _ForwardIterator __i = __first;      return __first == __last ? __first			       : std::remove_copy(++__i, __last,						  __first, __value);    }  /**   *  @brief Remove elements from a sequence using a predicate.   *  @param  first  A forward iterator.   *  @param  last   A forward iterator.   *  @param  pred   A predicate.   *  @return   An iterator designating the end of the resulting sequence.   *   *  All elements for which @p pred returns true are removed from the range   *  @p [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 @p last   *  are still present, but their value is unspecified.  */  template<typename _ForwardIterator, typename _Predicate>    _ForwardIterator    remove_if(_ForwardIterator __first, _ForwardIterator __last,	      _Predicate __pred)    {      // concept requirements      __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<				  _ForwardIterator>)      __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,	    typename iterator_traits<_ForwardIterator>::value_type>)      __glibcxx_requires_valid_range(__first, __last);      __first = std::find_if(__first, __last, __pred);      _ForwardIterator __i = __first;      return __first == __last ? __first			       : std::remove_copy_if(++__i, __last,						     __first, __pred);    }  /**   *  @if maint   *  This is an uglified unique_copy(_InputIterator, _InputIterator,   *                                  _OutputIterator)   *  overloaded for output iterators.   *  @endif  */  template<typename _InputIterator, typename _OutputIterator>    _OutputIterator    __unique_copy(_InputIterator __first, _InputIterator __last,		  _OutputIterator __result,		  output_iterator_tag)    {      // concept requirements -- taken care of in dispatching function      typename iterator_traits<_InputIterator>::value_type __value = *__first;      *__result = __value;      while (++__first != __last)	if (!(__value == *__first))	  {	    __value = *__first;	    *++__result = __value;	  }      return ++__result;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -