_numeric.c

来自「stl的源码」· C语言 代码 · 共 107 行

C
107
字号
/* * * * Copyright (c) 1994 * Hewlett-Packard Company * * Copyright (c) 1996,1997 * Silicon Graphics Computer Systems, Inc. * * Copyright (c) 1997 * Moscow Center for SPARC Technology * * Copyright (c) 1999 * Boris Fomitchev * * This material is provided "as is", with absolutely no warranty expressed * or implied. Any use is at your own risk. * * Permission to use or copy this software for any purpose is hereby granted * without fee, provided the above notices are retained on all copies. * Permission to modify the code and to distribute modified code is granted, * provided the above notices are retained, and a notice that the code was * modified is included with the above copyright notice. * */#ifndef _STLP_NUMERIC_C#define _STLP_NUMERIC_C#ifndef _STLP_INTERNAL_NUMERIC_H# include <stl/_numeric.h>#endif_STLP_BEGIN_NAMESPACE_STLP_MOVE_TO_PRIV_NAMESPACEtemplate <class _InputIterator, class _OutputIterator, class _Tp,          class _BinaryOperation>_OutputIterator__partial_sum(_InputIterator __first, _InputIterator __last,              _OutputIterator __result, _Tp*, _BinaryOperation __binary_op) {  _STLP_DEBUG_CHECK(__check_range(__first, __last))  if (__first == __last) return __result;  *__result = *__first;  _Tp __val = *__first;  while (++__first != __last) {    __val = __binary_op(__val, *__first);    *++__result = __val;  }  return ++__result;}template <class _InputIterator, class _OutputIterator, class _Tp,          class _BinaryOperation>_OutputIterator__adjacent_difference(_InputIterator __first, _InputIterator __last,                      _OutputIterator __result, _Tp*,                      _BinaryOperation __binary_op) {  _STLP_DEBUG_CHECK(__check_range(__first, __last))  if (__first == __last) return __result;  *__result = *__first;  _Tp __val = *__first;  while (++__first != __last) {    _Tp __tmp = *__first;    *++__result = __binary_op(__tmp, __val);    __val = __tmp;  }  return ++__result;}template <class _Tp, class _Integer, class _MonoidOperation>_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr) {  _STLP_MPWFIX_TRY  if (__n == 0)    return __identity_element(__opr);  else {    while ((__n & 1) == 0) {      __n >>= 1;      __x = __opr(__x, __x);    }    _Tp __result = __x;  _STLP_MPWFIX_TRY    __n >>= 1;    while (__n != 0) {      __x = __opr(__x, __x);      if ((__n & 1) != 0)        __result = __opr(__result, __x);      __n >>= 1;    }    return __result;  _STLP_MPWFIX_CATCH  }  _STLP_MPWFIX_CATCH_ACTION(__x = _Tp())}_STLP_MOVE_TO_STD_NAMESPACE_STLP_END_NAMESPACE#endif /*  _STLP_NUMERIC_C */// Local Variables:// mode:C++// End:

⌨️ 快捷键说明

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