_valarray.h

来自「stl的源码」· C头文件 代码 · 共 1,685 行 · 第 1/4 页

H
1,685
字号
                                           const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  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] - __y[__i];  return __tmp;}template <class _Tp>inline valarray<_Tp> _STLP_CALL operator^(const valarray<_Tp>& __x,                                          const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  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] ^ __y[__i];  return __tmp;}template <class _Tp>inline valarray<_Tp> _STLP_CALL operator&(const valarray<_Tp>& __x,                                          const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  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] & __y[__i];  return __tmp;}template <class _Tp>inline valarray<_Tp> _STLP_CALL operator|(const valarray<_Tp>& __x,                                          const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  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] | __y[__i];  return __tmp;}template <class _Tp>inline valarray<_Tp> _STLP_CALL operator<<(const valarray<_Tp>& __x,                                           const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  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] << __y[__i];  return __tmp;}template <class _Tp>inline valarray<_Tp> _STLP_CALL operator>>(const valarray<_Tp>& __x,                                           const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  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] >> __y[__i];  return __tmp;}// Binary arithmetic operations between an array and a scalar.template <class _Tp>inline valarray<_Tp> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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> _STLP_CALL 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 _STLP_CALL operator==(const valarray<_Tp>& __x,                                            const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  _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 _STLP_CALL operator<(const valarray<_Tp>& __x,                                           const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  _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 _STLP_USE_SEPARATE_RELOPS_NAMESPACEtemplate <class _Tp>inline _Valarray_bool _STLP_CALL operator!=(const valarray<_Tp>& __x,                                            const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  _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 _STLP_CALL operator>(const valarray<_Tp>& __x,                                           const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  _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 _STLP_CALL operator<=(const valarray<_Tp>& __x,                                            const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  _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 _STLP_CALL operator>=(const valarray<_Tp>& __x,                                            const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  _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 /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */// fbp : swap ?template <class _Tp>inline _Valarray_bool _STLP_CALL operator&&(const valarray<_Tp>& __x,                                            const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  _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 _STLP_CALL operator||(const valarray<_Tp>& __x,                                            const valarray<_Tp>& __y) {  _STLP_ASSERT(__x.size() == __y.size())  _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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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 _STLP_CALL 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;

⌨️ 快捷键说明

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