_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 + -
显示快捷键?