valarray

来自「sgi公布的STL标准程序库的源代码」· 代码 · 共 1,774 行 · 第 1/4 页

TXT
1,774
字号
  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] >> __y[__i];  return __tmp;}// Binary arithmetic operations between an array and a scalar.template <class _Tp> inline valarray<_Tp> operator*(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  * __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator*(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c * __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator/(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  / __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator/(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c / __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator%(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  % __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator%(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c % __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator+(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  + __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator+(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c + __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator-(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  - __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator-(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c - __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator^(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  ^ __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator^(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c ^ __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator&(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  & __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator&(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c & __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator|(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  | __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator|(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c | __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator<<(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  << __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator<<(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c << __x[__i];  return __tmp;}template <class _Tp> inline valarray<_Tp> operator>>(const valarray<_Tp>& __x, const _Tp& __c) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  >> __c;  return __tmp;}template <class _Tp> inline valarray<_Tp> operator>>(const _Tp& __c, const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c >> __x[__i];  return __tmp;}// Binary logical operations between two arrays.  Behavior is undefined// if the two arrays have different lengths.  Note that operator== does// not do what you might at first expect.template <class _Tp> inline valarray<bool> operator==(const valarray<_Tp>& __x,                                 const valarray<_Tp>& __y){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] == __y[__i];  return __tmp;  }template <class _Tp> inline valarray<bool> operator<(const valarray<_Tp>& __x,                                const valarray<_Tp>& __y){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] < __y[__i];  return __tmp;  }#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDERtemplate <class _Tp> inline valarray<bool> operator!=(const valarray<_Tp>& __x,                                 const valarray<_Tp>& __y){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] != __y[__i];  return __tmp;  }template <class _Tp> inline valarray<bool> operator>(const valarray<_Tp>& __x,                                const valarray<_Tp>& __y){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] > __y[__i];  return __tmp;  }template <class _Tp> inline valarray<bool> operator<=(const valarray<_Tp>& __x,                                 const valarray<_Tp>& __y){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] <= __y[__i];  return __tmp;  }template <class _Tp> inline valarray<bool> operator>=(const valarray<_Tp>& __x,                                 const valarray<_Tp>& __y){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] >= __y[__i];  return __tmp;  }#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */template <class _Tp> inline valarray<bool> operator&&(const valarray<_Tp>& __x,                                 const valarray<_Tp>& __y){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] && __y[__i];  return __tmp;  }template <class _Tp> inline valarray<bool> operator||(const valarray<_Tp>& __x,                                 const valarray<_Tp>& __y){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] || __y[__i];  return __tmp;  }// Logical operations between an array and a scalar.template <class _Tp>inline valarray<bool> operator==(const valarray<_Tp>& __x, const _Tp& __c){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] == __c;  return __tmp;  }template <class _Tp>inline valarray<bool> operator==(const _Tp& __c, const valarray<_Tp>& __x){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c == __x[__i];  return __tmp;  }template <class _Tp>inline valarray<bool> operator!=(const valarray<_Tp>& __x, const _Tp& __c){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] != __c;  return __tmp;  }template <class _Tp>inline valarray<bool> operator!=(const _Tp& __c, const valarray<_Tp>& __x){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c != __x[__i];  return __tmp;  }template <class _Tp>inline valarray<bool> operator<(const valarray<_Tp>& __x, const _Tp& __c){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] < __c;  return __tmp;  }template <class _Tp>inline valarray<bool> operator<(const _Tp& __c, const valarray<_Tp>& __x){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c < __x[__i];  return __tmp;  }template <class _Tp>inline valarray<bool> operator>(const valarray<_Tp>& __x, const _Tp& __c){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] > __c;  return __tmp;  }template <class _Tp>inline valarray<bool> operator>(const _Tp& __c, const valarray<_Tp>& __x){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c > __x[__i];  return __tmp;  }template <class _Tp>inline valarray<bool> operator<=(const valarray<_Tp>& __x, const _Tp& __c){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i]  <= __c;  return __tmp;  }template <class _Tp>inline valarray<bool> operator<=(const _Tp& __c, const valarray<_Tp>& __x){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c <= __x[__i];  return __tmp;  }template <class _Tp>inline valarray<bool> operator>=(const valarray<_Tp>& __x, const _Tp& __c){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] >= __c;  return __tmp;  }template <class _Tp>inline valarray<bool> operator>=(const _Tp& __c, const valarray<_Tp>& __x){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c >= __x[__i];  return __tmp;  }template <class _Tp>inline valarray<bool> operator&&(const valarray<_Tp>& __x, const _Tp& __c){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] && __c;  return __tmp;  }template <class _Tp>inline valarray<bool> operator&&(const _Tp& __c, const valarray<_Tp>& __x){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c && __x[__i];  return __tmp;  }template <class _Tp>inline valarray<bool> operator||(const valarray<_Tp>& __x, const _Tp& __c){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __x[__i] || __c;  return __tmp;  }template <class _Tp>inline valarray<bool> operator||(const _Tp& __c, const valarray<_Tp>& __x){  valarray<bool> __tmp(__x.size(), valarray<bool>::_NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = __c || __x[__i];  return __tmp;  }// valarray "transcendentals" (the list includes abs and sqrt, which,// of course, are not transcendental).template <class _Tp>inline valarray<_Tp> abs(const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = abs(__x[__i]);  return __tmp;}template <class _Tp>inline valarray<_Tp> acos(const valarray<_Tp>& __x) {  typedef typename valarray<_Tp>::_NoInit _NoInit;  valarray<_Tp> __tmp(__x.size(), _NoInit());  for (size_t __i = 0; __i < __x.size(); ++__i)    __tmp[__i] = acos(__x[__i]);  return __tmp;}template <class _Tp>inline valarray<_Tp> asin(const valarray<_Tp>& __x) {

⌨️ 快捷键说明

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